|
|
- import 'https://deno.land/x/dotenv@v2.0.0/load.ts'
- import Ask from 'https://deno.land/x/ask@1.0.6/mod.ts'
-
- import { Database } from 'https://deno.land/x/aloedb@0.9.0/mod.ts'
- import { UserSchema } from './src/stores/user.ts'
-
- import * as bcrypt from 'https://deno.land/x/bcrypt@v0.2.4/mod.ts'
-
- // create ask for promt
- const ask = new Ask()
-
- const user = <UserSchema>{ is_admin: false };
-
- // getting email for user
- const { email } = await ask.input({
- name: 'email',
- message: 'Email:',
- validate: (value) => {
- return (value) ? true : false
- }
- })
-
- user.email = email
-
-
- // getting password for user
- const { password } = await ask.input({
- name: 'password',
- message: 'Password:',
- validate: (value) => {
- return (value) ? true : false
- }
- })
-
- const { passwordRepeat } = await ask.input({
- name: 'passwordRepeat',
- message: 'Repeat Password:',
- validate: (value) => {
- let result = false
-
- if (value === password) {
- result = true
- } else {
- console.log('Password not match')
- }
-
- return result
- }
- })
-
- user.password = password
-
-
- // is admin
- const { isAdmin } = await ask.input({
- name: 'admin',
- message: 'Admin (n):',
- validate: (value) => {
- let result = false
-
- if (value === 'n' || value === 'y') {
- result = true
- } else {
- console.log('Ony (y)es and (n)o allowed')
- }
-
- return result
- }
- })
-
- user.is_admin = isAdmin
-
- // getting schema for users
- const db = new Database<UserSchema>('./storage/database/users.json')
-
- // search for user by email
- const userExists = await db.findOne({ email: email })
-
- if (userExists) {
- console.log('User already exists')
- Deno.exit(1);
- }
-
- // hash password
- user.password = await bcrypt.hash(user.password);
-
- await db.insertOne(user)
|