diff options
| author | Nathan Reiner <nathan@nathanreiner.xyz> | 2025-11-24 15:55:20 +0100 |
|---|---|---|
| committer | Nathan Reiner <nathan@nathanreiner.xyz> | 2025-11-24 15:55:20 +0100 |
| commit | 4b6e37397d3a9a80db0c20484b712175c7b9c9c7 (patch) | |
| tree | a741d76d250b7e7a53f3ab6715106463db32215e /src/routes/api/profile | |
| parent | a72a9c6fa8aacbd9e945fdce64bdaf7895425e95 (diff) | |
add password-dialog
Diffstat (limited to 'src/routes/api/profile')
| -rw-r--r-- | src/routes/api/profile/root.zig | 1 | ||||
| -rw-r--r-- | src/routes/api/profile/update-password.zig | 37 |
2 files changed, 38 insertions, 0 deletions
diff --git a/src/routes/api/profile/root.zig b/src/routes/api/profile/root.zig index 04bf042..0bdd064 100644 --- a/src/routes/api/profile/root.zig +++ b/src/routes/api/profile/root.zig @@ -3,3 +3,4 @@ const HandlerInfo = memora.routes.HandlerInfo; pub const image = @import("image/root.zig"); pub const set: HandlerInfo = .from_type(@import("set.zig")); +pub const @"update-password": HandlerInfo = .from_type(@import("update-password.zig")); diff --git a/src/routes/api/profile/update-password.zig b/src/routes/api/profile/update-password.zig new file mode 100644 index 0000000..ac6ceed --- /dev/null +++ b/src/routes/api/profile/update-password.zig @@ -0,0 +1,37 @@ +const std = @import("std"); + +const memora = @import("memora"); +const Context = memora.Context; +const Storage = memora.Storage; + +pub const access = .users; + +const Body = struct { + current_password: []const u8, + new_password: []const u8, +}; + +const Response = struct { + success: bool, +}; + +pub fn post(ctx: *Context, body: Body) !Response { + if (ctx.storage.sessions.get(ctx.storage, ctx.fingerprint)) |session| { + var user = try Storage.User.open(ctx.storage, session.info.name); + defer user.deinit(); + + const result = Response { + .success = user.check_password(body.current_password) + }; + + if (result.success) { + try user.set_password(body.new_password); + try user.sync(); + } + + return result; + + } else { + return error.UnknownSession; + } +} |