xgit simple git

nexus

nexus

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

auth/login.php


1<?php
2require_once __DIR__ . '/../includes/bootstrap.php';
3if ($USER) go('/');
4 
5$err = '';
6$next = get('next', u('/'));
7 
8if ($_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>