Сайт объявлений о работе: Создание суперпользователя

Оглавление

Sokhavuth TIN ・ Aug 11 ・ 2 min read

GitHub: https://github.com/Sokhavuth/opine-job
Deno Deploy: https://khmerweb-job.deno.dev/users

Логин — это процесс проверки или аутентификации определенных зарегистрированных пользователей для того, чтобы они могли попасть на некоторые запрещенные страницы. В результате, прежде всего, нам нужно зарегистрировать этих специальных пользователей в базе данных, чтобы, когда они попытаются войти на приборную панель или другие запрещенные страницы, мы могли проверить в базе данных, зарегистрированы они или нет. Если они зарегистрированы, мы можем написать код, который позволит им попасть в эти запрещенные области, в противном случае — нет.

Прежде чем достичь этой цели, нам необходимо создать коллекцию пользователей в базе данных MongoDB для регистрации суперпользователя или менеджера, чтобы он мог регистрировать других специальных пользователей и управлять приборной панелью.

С другой стороны, для безопасности паролей пользователей мы можем использовать пакет bcrypt для хэширования паролей пользователей, чтобы никто не мог прочитать и понять эти пароли, даже администратор(ы) сайта. Вот пример хэшированного пароля: $2a$08$zuHtXr2ITSIHYfLL/kaj9uo7XTZiL/rNJV0jdJB/7HIHFmuSGWb7C.

// controllers/users/login.js

import login from "../../views/users/login.jsx";
import userdb from "../../models/user.ts";


class Login{
    async getForm(req){
        const config = req.mysetting();
        config.page_title = "Login Page";
        config.route = '/users/login';

        userdb.createRootUser(req);

        return await login(config);
    }
}


export default new Login();
Вход в полноэкранный режим Выход из полноэкранного режима
// models/users.ts

import { bcrypt } from '../deps.ts';


interface UserSchema {
    _id: ObjectId;
    id: string; 
    title: string;
    content: string;
    thumb: string;
    date: string;
    role: string;
    email: string;
    password: string;
}

class User{
    async createRootUser(req){
        const id = Date.now() + Math.round(Math.random() * 1E9).toString();
        const salt = await bcrypt.genSalt(8);
        const hashPassword = bcrypt.hashSync('xxxxxxxxx', salt);

        let newUser = {
            id: id, 
            title: 'Sokhavuth',
            content: '',
            thumb: '',
            date: '',
            role: 'Admin',
            email: 'vuthdevelop@gmail.app',
            password: hashPassword,
        }

        const users = req.mydb.collection<UserSchema>("users");
        await users.insertOne(newUser);
    }
}


export default new User();
Войти в полноэкранный режим Выход из полноэкранного режима

Оцените статью
devanswers.ru
Добавить комментарий