View file test.4imas.ru/config/auth.php

File size: 1.73Kb
<?php

function register_user($name, $email, $password) {
    global $pdo;

    $stmt = $pdo->prepare("SELECT id FROM users WHERE email = :email");
    $stmt->execute(['email' => $email]);
    if ($stmt->fetch()) {
        return ['success' => false, 'error' => 'Пользователь с таким email уже существует'];
    }

    $password_hash = password_hash($password, PASSWORD_DEFAULT);
    $stmt = $pdo->prepare("INSERT INTO users (name, email, password, role, created_at) VALUES (:name, :email, :password, 'user', NOW())");
    $stmt->execute([
        'name' => $name,
        'email' => $email,
        'password' => $password_hash
    ]);

    return ['success' => true, 'user_id' => $pdo->lastInsertId()];
}

function login_user($email, $password) {
    global $pdo;
    
    $stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email LIMIT 1");
    $stmt->execute(['email' => $email]);
    $user = $stmt->fetch();

    if (!$user) {
        return ['success' => false, 'error' => 'Неверный email или пароль'];
    }

    if (!password_verify($password, $user['password'])) {
        return ['success' => false, 'error' => 'Неверный email или пароль'];
    }

    $_SESSION['user_id'] = $user['id'];
    $_SESSION['user_name'] = $user['name'];
    $_SESSION['user_email'] = $user['email'];
    $_SESSION['user_role'] = $user['role'];

    return ['success' => true, 'user' => $user];
}

function logout_user() {
    session_unset();
    session_destroy();
}

function require_login() {
    if (!is_logged_in()) {
        redirect('/login.php');
    }
}

function require_admin() {
    if (!is_admin()) {
        redirect('/login.php');
    }
}
?>