| | <!DOCTYPE html> |
| | <html lang="en"> |
| | <head> |
| | <meta charset="UTF-8" /> |
| | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | <title>Puter Auth (Redirect Safe)</title> |
| | <link rel="stylesheet" href="style.css"> |
| | <script src="https://js.puter.com/v2/"></script> |
| | </head> |
| | <body> |
| | <div class="container"> |
| | <h1>Puter Authentication</h1> |
| | <p class="desc">Sign in to your Puter account to continue</p> |
| | <button id="sign-in">Sign In with Puter</button> |
| | <pre id="output">Waiting for user action...</pre> |
| | </div> |
| |
|
| | <script> |
| | const output = document.getElementById('output'); |
| | const signInBtn = document.getElementById('sign-in'); |
| | |
| | function print(msg) { |
| | output.innerText = msg; |
| | console.log(msg); |
| | } |
| | |
| | async function trySignIn() { |
| | try { |
| | print("Redirecting to Puter sign-in..."); |
| | await puter.auth.signIn({ mode: "redirect" }); |
| | } catch (err) { |
| | print("❌ Redirect sign-in failed:\n" + JSON.stringify(err)); |
| | } |
| | } |
| | |
| | signInBtn.addEventListener('click', () => { |
| | trySignIn(); |
| | }); |
| | |
| | |
| | (async () => { |
| | const user = await puter.auth.getUser(); |
| | if (user) { |
| | print("✅ Already signed in:\n" + JSON.stringify(user, null, 2)); |
| | document.querySelector('.desc').innerText = `Welcome, ${user.username}!`; |
| | signInBtn.style.display = "none"; |
| | } |
| | })(); |
| | </script> |
| | </body> |
| | </html> |
| |
|