From 41926c10ea2e8496ce4b528262f5047ccbe6f155 Mon Sep 17 00:00:00 2001 From: Bobby Date: Sat, 7 Mar 2026 14:25:54 +0530 Subject: Implement authentication system with login/logout functionality and session management --- services/auth.go | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 services/auth.go (limited to 'services') 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 -- cgit v1.2.3