xgit simple git

nexus

nexus

clone git clone https://kb.hax.al/nexus

auth/login.php

1 <?php
2 require_once __DIR__ . '/../includes/bootstrap.php';
3 if ($USER) go('/');
4 
5 $err = '';
6 $next = get('next', u('/'));
7 
8 if ($_SERVER['REQUEST_METHOD'] === 'POST') {
9     if (!csrf_ok()) { $err = 'Invalid request. Please try again.'; }
10     else {
11         $login = post('login');
12         $pass  = post('password');
13         $row   = DB::row('SELECT * FROM users WHERE username=? OR email=?', [$login, $login]);
14         if (!$row || !password_verify($pass, $row['password'])) {
15             $err = 'Incorrect username or password.';
16         } elseif ($row['suspended']) {
17             $err = 'This account has been suspended.';
18         } else {
19             login_user((int)$row['id']);
20             go(ltrim(str_replace(BASE, '', $next), '/') ?: '/');
21         }
22     }
23 }
24 ?>
25 <!DOCTYPE html>
26 <html lang="en">
27 <head>
28   <meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1">
29   <title>Log In — <?= e(cfg('site_name','Nexus Forum')) ?></title>
30   <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
31   <link rel="stylesheet" href="<?= asset('css/main.css') ?>">
32 </head>
33 <body class="auth-body">
34 <div class="auth-page">
35   <div class="auth-card">
36     <a href="<?= u('/') ?>" class="auth-logo">
37       <div class="logo-mark"><?= e(substr(cfg('site_name','N'),0,1)) ?></div>
38       <span><?= e(cfg('site_name','Nexus Forum')) ?></span>
39     </a>
40     <h1>Welcome back</h1>
41     <p class="auth-sub">Sign in to your account</p>
42     <?php if ($err): ?><div class="alert err"><?= e($err) ?></div><?php endif; ?>
43     <form method="POST">
44       <?= csrf_input() ?>
45       <input type="hidden" name="next" value="<?= e($next) ?>">
46       <div class="fg">
47         <label for="login">Username or Email</label>
48         <input type="text" id="login" name="login" class="fi" required autofocus
49                value="<?= e($_POST['login'] ?? '') ?>" placeholder="your_username">
50       </div>
51       <div class="fg">
52         <label for="password">Password</label>
53         <div class="pw-row">
54           <input type="password" id="password" name="password" class="fi" required placeholder="••••••••">
55           <button type="button" class="pw-eye" onclick="togglePwd('password')">👁</button>
56         </div>
57       </div>
58       <button type="submit" class="btn-primary btn-block">Sign In</button>
59     </form>
60     <p class="auth-foot">No account? <a href="<?= u('auth/register.php') ?>">Sign up →</a></p>
61   </div>
62   <p class="auth-back"><a href="<?= u('/') ?>">← Back to forum</a></p>
63 </div>
64 <script>function togglePwd(id){var e=document.getElementById(id);e.type=e.type==='password'?'text':'password';}</script>
65 </body></html>