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 }