Spaces:
Sleeping
Sleeping
File size: 2,412 Bytes
20cba6d f14a735 20cba6d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | package controllers
import (
"net/http"
"situkang/dto"
"situkang/services"
"situkang/utils"
"github.com/gin-gonic/gin"
)
type AuthController interface {
Register(ctx *gin.Context)
Login(ctx *gin.Context)
Refresh(ctx *gin.Context)
Logout(ctx *gin.Context)
ForgotPassword(ctx *gin.Context)
ResetPassword(ctx *gin.Context)
}
type authController struct {
authService services.AuthService
}
func NewAuthController(authService services.AuthService) AuthController {
return &authController{authService: authService}
}
func (ac *authController) Register(ctx *gin.Context) {
req := RequestJSON[dto.AuthRegisterRequest](ctx)
if ctx.IsAborted() {
return
}
data, err := ac.authService.Register(ctx, req)
if err != nil {
utils.ResponseFAILED(ctx, nil, err)
return
}
utils.JSONSuccess(ctx, http.StatusCreated, "Registrasi berhasil", data, nil)
}
func (ac *authController) Login(ctx *gin.Context) {
req := RequestJSON[dto.AuthLoginRequest](ctx)
if ctx.IsAborted() {
return
}
data, err := ac.authService.Login(ctx, req)
if err != nil {
utils.ResponseFAILED(ctx, nil, err)
return
}
utils.JSONSuccess(ctx, http.StatusOK, "", data, nil)
}
func (ac *authController) Refresh(ctx *gin.Context) {
req := RequestJSON[dto.AuthRefreshRequest](ctx)
if ctx.IsAborted() {
return
}
data, err := ac.authService.Refresh(ctx, req)
if err != nil {
utils.ResponseFAILED(ctx, nil, err)
return
}
utils.JSONSuccess(ctx, http.StatusOK, "", data, nil)
}
func (ac *authController) Logout(ctx *gin.Context) {
err := ac.authService.Logout(ctx)
if err != nil {
utils.ResponseFAILED(ctx, nil, err)
return
}
utils.JSONSuccess(ctx, http.StatusOK, "Berhasil logout", gin.H{}, nil)
}
func (ac *authController) ForgotPassword(ctx *gin.Context) {
req := RequestJSON[dto.AuthForgotPasswordRequest](ctx)
if ctx.IsAborted() {
return
}
err := ac.authService.ForgotPassword(ctx, req)
if err != nil {
utils.ResponseFAILED(ctx, nil, err)
return
}
utils.JSONSuccess(ctx, http.StatusOK, "Link reset password telah dikirim", gin.H{}, nil)
}
func (ac *authController) ResetPassword(ctx *gin.Context) {
req := RequestJSON[dto.AuthResetPasswordRequest](ctx)
if ctx.IsAborted() {
return
}
err := ac.authService.ResetPassword(ctx, req)
if err != nil {
utils.ResponseFAILED(ctx, nil, err)
return
}
utils.JSONSuccess(ctx, http.StatusOK, "Password berhasil direset", gin.H{}, nil)
}
|