- if (user_id_maybe) |user_id| {
- if (env.txn()) |txn| {
- defer txn.abort();
- if (txn.dbi("users", Id, User)) |users| {
- user_maybe = users.get(user_id_maybe.?);
- }
+ const user_ids = try txn.dbi("user_ids", Username, Id);
+ const user_id = user_ids.get(username_array) orelse return error.UnknownUsername;
+ std.debug.print("id: {}\n", .{user_id});
+
+ const users = try txn.dbi("users", Id, User);
+ if (users.get(user_id)) |user| {
+ if (verify_password(password, user.password_hash)) {
+ const sessions = try txn.dbi("sessions", Id, Id);
+ const session_token = Prng.gen_id(sessions);
+ sessions.put(session_token, user_id);
+ return session_token;
+ } else {
+ return error.IncorrectPassword;