Files
air-bookings/src/user_service.v
2025-03-11 19:32:17 +05:30

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
}