54 lines
1.3 KiB
V
54 lines
1.3 KiB
V
module main
|
|
|
|
import veb.auth
|
|
|
|
fn (app &App) service_add_user(first_name string, last_name string, email string, password string, gender string) ! {
|
|
salt := auth.generate_salt()
|
|
|
|
user_model := User{
|
|
first_name: first_name
|
|
last_name: last_name
|
|
email: email
|
|
password: auth.hash_password_with_salt(password, salt)
|
|
gender: gender
|
|
salt: salt
|
|
}
|
|
|
|
mut insert_error := ''
|
|
sql app.db {
|
|
insert user_model into User
|
|
} or { insert_error = err.msg() }
|
|
if insert_error != '' {
|
|
return error(insert_error)
|
|
}
|
|
}
|
|
|
|
fn (app &App) service_find_user_by_email(email string, password string) !User {
|
|
mut user := sql app.db {
|
|
select from User where email == email
|
|
}!
|
|
if user[0].id == 0 {
|
|
return error('User not found')
|
|
}
|
|
if !auth.compare_password_with_hash(password, user[0].salt, user[0].password) {
|
|
return error('Invalid password')
|
|
}
|
|
return user[0]
|
|
}
|
|
|
|
fn (app &App) service_update_user(id ?string, first_name string, last_name string, password string) ! {
|
|
if id == none {
|
|
return error('User ID is required')
|
|
}
|
|
|
|
salt := auth.generate_salt()
|
|
hashed_password := auth.hash_password_with_salt(password, salt)
|
|
|
|
sql app.db {
|
|
update User set first_name = first_name, last_name = last_name, password = hashed_password,
|
|
salt = salt where id == id
|
|
}!
|
|
|
|
return
|
|
}
|