aboutsummaryrefslogtreecommitdiff
path: root/services/auth.go
diff options
context:
space:
mode:
Diffstat (limited to 'services/auth.go')
-rw-r--r--services/auth.go37
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