diff options
| author | Bobby <[email protected]> | 2026-03-07 14:25:54 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2026-03-07 14:25:54 +0530 |
| commit | 41926c10ea2e8496ce4b528262f5047ccbe6f155 (patch) | |
| tree | 67ff5a27bb50faec368cf7ef38a1b1f2866459dd /services | |
| parent | ed2a033d7c08e448f5c6fd035e2de8f51431b597 (diff) | |
| download | dove-41926c10ea2e8496ce4b528262f5047ccbe6f155.tar.xz dove-41926c10ea2e8496ce4b528262f5047ccbe6f155.zip | |
Implement authentication system with login/logout functionality and session management
Diffstat (limited to 'services')
| -rw-r--r-- | services/auth.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/services/auth.go b/services/auth.go new file mode 100644 index 0000000..ce62d10 --- /dev/null +++ b/services/auth.go @@ -0,0 +1,37 @@ +package services + +import ( + "dove/config" + "dove/enums" + "dove/messages" + "dove/types" + "dove/utils/auth" + "dove/utils/shortcuts" + + "github.com/gofiber/fiber/v2" +) + +func Authenticate(context *fiber.Ctx, request types.LoginRequest) (*types.MessageResponse, *types.ServiceError) { + switch request.Username == config.Server.Username && request.Password == config.Server.Password { + case true: + if sessionError := auth.Authenticate(context); sessionError != nil { + return nil, shortcuts.ServiceError(enums.Internal, sessionError.Error()) + } + + return &types.MessageResponse{ + Message: messages.AuthAuthenticated, + }, nil + default: + return nil, shortcuts.ServiceError(enums.Unauthorized, messages.AuthInvalidCredentials) + } +} + +func Deauthenticate(context *fiber.Ctx) (*types.MessageResponse, *types.ServiceError) { + if sessionError := auth.Deauthenticate(context); sessionError != nil { + return nil, shortcuts.ServiceError(enums.Internal, sessionError.Error()) + } + + return &types.MessageResponse{ + Message: messages.AuthLoggedOut, + }, nil +}
\ No newline at end of file |
