| package controllers |
|
|
| import ( |
| "net/http" |
|
|
| "dinacom-11.0-backend/models/dto" |
| "dinacom-11.0-backend/services" |
| "dinacom-11.0-backend/utils" |
|
|
| "github.com/gin-gonic/gin" |
| "github.com/google/uuid" |
| ) |
|
|
| type AuthController interface { |
| RegisterUser(ctx *gin.Context) |
| VerifyOTP(ctx *gin.Context) |
| LoginUser(ctx *gin.Context) |
| LoginAdmin(ctx *gin.Context) |
| LoginWorker(ctx *gin.Context) |
| GoogleAuth(ctx *gin.Context) |
| GetProfile(ctx *gin.Context) |
| GetAllUsers(ctx *gin.Context) |
| GetAllWorkers(ctx *gin.Context) |
| } |
|
|
| type authController struct { |
| authService services.AuthService |
| } |
|
|
| func NewAuthController(authService services.AuthService) AuthController { |
| return &authController{authService: authService} |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| func (c *authController) RegisterUser(ctx *gin.Context) { |
| var req dto.RegisterRequest |
| if err := ctx.ShouldBindJSON(&req); err != nil { |
| utils.SendErrorResponse(ctx, http.StatusBadRequest, err.Error()) |
| return |
| } |
|
|
| if err := c.authService.RegisterUser(req); err != nil { |
| utils.SendErrorResponse(ctx, http.StatusBadRequest, err.Error()) |
| return |
| } |
|
|
| utils.SendSuccessResponse(ctx, "OTP sent to email", nil) |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| func (c *authController) VerifyOTP(ctx *gin.Context) { |
| var req dto.VerifyOTPRequest |
| if err := ctx.ShouldBindJSON(&req); err != nil { |
| utils.SendErrorResponse(ctx, http.StatusBadRequest, err.Error()) |
| return |
| } |
|
|
| token, err := c.authService.VerifyOTP(req) |
| if err != nil { |
| utils.SendErrorResponse(ctx, http.StatusUnauthorized, err.Error()) |
| return |
| } |
|
|
| utils.SendSuccessResponse(ctx, "Verification successful", dto.AuthResponse{Token: token}) |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| func (c *authController) LoginUser(ctx *gin.Context) { |
| var req dto.LoginRequest |
| if err := ctx.ShouldBindJSON(&req); err != nil { |
| utils.SendErrorResponse(ctx, http.StatusBadRequest, err.Error()) |
| return |
| } |
|
|
| token, err := c.authService.LoginUser(req) |
| if err != nil { |
| utils.SendErrorResponse(ctx, http.StatusUnauthorized, err.Error()) |
| return |
| } |
|
|
| utils.SendSuccessResponse(ctx, "Login successful", dto.AuthResponse{Token: token}) |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| func (c *authController) LoginAdmin(ctx *gin.Context) { |
| var req dto.LoginRequest |
| if err := ctx.ShouldBindJSON(&req); err != nil { |
| utils.SendErrorResponse(ctx, http.StatusBadRequest, err.Error()) |
| return |
| } |
|
|
| token, err := c.authService.LoginAdmin(req) |
| if err != nil { |
| utils.SendErrorResponse(ctx, http.StatusUnauthorized, err.Error()) |
| return |
| } |
|
|
| utils.SendSuccessResponse(ctx, "Login successful", dto.AuthResponse{Token: token}) |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| func (c *authController) LoginWorker(ctx *gin.Context) { |
| var req dto.LoginRequest |
| if err := ctx.ShouldBindJSON(&req); err != nil { |
| utils.SendErrorResponse(ctx, http.StatusBadRequest, err.Error()) |
| return |
| } |
|
|
| token, err := c.authService.LoginWorker(req) |
| if err != nil { |
| utils.SendErrorResponse(ctx, http.StatusUnauthorized, err.Error()) |
| return |
| } |
|
|
| utils.SendSuccessResponse(ctx, "Login successful", dto.AuthResponse{Token: token}) |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| func (c *authController) GetProfile(ctx *gin.Context) { |
| userIDVal, exists := ctx.Get("user_id") |
| if !exists { |
| utils.SendErrorResponse(ctx, http.StatusUnauthorized, "Unauthorized") |
| return |
| } |
|
|
| userID := userIDVal.(uuid.UUID) |
| profile, err := c.authService.GetProfile(userID) |
| if err != nil { |
| utils.SendErrorResponse(ctx, http.StatusNotFound, err.Error()) |
| return |
| } |
|
|
| utils.SendSuccessResponse(ctx, "Profile retrieved", profile) |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| func (c *authController) GetAllUsers(ctx *gin.Context) { |
| users, err := c.authService.GetAllUsers() |
| if err != nil { |
| utils.SendErrorResponse(ctx, http.StatusInternalServerError, err.Error()) |
| return |
| } |
|
|
| utils.SendSuccessResponse(ctx, "Users retrieved", users) |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| func (c *authController) GetAllWorkers(ctx *gin.Context) { |
| workers, err := c.authService.GetAllWorkers() |
| if err != nil { |
| utils.SendErrorResponse(ctx, http.StatusInternalServerError, err.Error()) |
| return |
| } |
|
|
| utils.SendSuccessResponse(ctx, "Workers retrieved", workers) |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| func (c *authController) GoogleAuth(ctx *gin.Context) { |
| var req dto.GoogleAuthRequest |
| if err := ctx.ShouldBindJSON(&req); err != nil { |
| utils.SendErrorResponse(ctx, http.StatusBadRequest, err.Error()) |
| return |
| } |
|
|
| response, err := c.authService.GoogleAuth(req) |
| if err != nil { |
| utils.SendErrorResponse(ctx, http.StatusUnauthorized, err.Error()) |
| return |
| } |
|
|
| utils.SendSuccessResponse(ctx, "Authentication successful", response) |
| } |
|
|