|
|
@ -0,0 +1,87 @@ |
|
|
|
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) |