163 lines
3.3 KiB
Go
Raw Normal View History

2025-02-27 18:59:58 +08:00
package authhttp
import (
"errors"
authsvc "legalgo-BE-go/internal/services/auth"
"legalgo-BE-go/internal/utilities/response"
"legalgo-BE-go/internal/utilities/utils"
2025-02-27 18:59:58 +08:00
"net/http"
"strings"
2025-02-27 18:59:58 +08:00
"github.com/go-chi/chi/v5"
)
func GetStaffProfile(
router chi.Router,
authSvc authsvc.AuthIntf,
) {
router.Get("/staff/profile", func(w http.ResponseWriter, r *http.Request) {
2025-02-27 18:59:58 +08:00
ctx := r.Context()
authHeader := r.Header.Get("Authorization")
if authHeader == "" {
2025-02-27 18:59:58 +08:00
response.ResponseWithErrorCode(
ctx,
w,
errors.New("provided auth is empty"),
2025-02-27 18:59:58 +08:00
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
"required params is not provided",
)
return
}
if !strings.HasPrefix(authHeader, "Bearer") {
response.ResponseWithErrorCode(
ctx,
w,
errors.New("invalid authorization token"),
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
"invalid required token",
)
return
}
token := strings.Split(authHeader, " ")
if len(token) < 2 {
response.ResponseWithErrorCode(
ctx,
w,
errors.New("invalid authorization"),
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
"invalid required token",
)
return
}
destructedToken, err := utils.DestructToken(token[1])
if err != nil {
response.ResponseWithErrorCode(
ctx,
w,
err,
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
err.Error(),
)
return
}
staffProfile, err := authSvc.GetStaffProfile(destructedToken.Email)
2025-02-27 18:59:58 +08:00
if err != nil {
response.ResponseWithErrorCode(
ctx,
w,
err,
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
err.Error(),
)
return
}
response.RespondJsonSuccess(ctx, w, staffProfile)
})
}
func GetUserProfile(
router chi.Router,
authSvc authsvc.AuthIntf,
) {
router.Get("/user/profile", func(w http.ResponseWriter, r *http.Request) {
2025-02-27 18:59:58 +08:00
ctx := r.Context()
authHeader := r.Header.Get("Authorization")
if authHeader == "" {
2025-02-27 18:59:58 +08:00
response.ResponseWithErrorCode(
ctx,
w,
errors.New("provided auth is empty"),
2025-02-27 18:59:58 +08:00
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
"required params is not provided",
)
return
}
if !strings.HasPrefix(authHeader, "Bearer") {
response.ResponseWithErrorCode(
ctx,
w,
errors.New("invalid authorization token"),
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
"invalid required token",
)
return
}
token := strings.Split(authHeader, " ")
if len(token) < 2 {
response.ResponseWithErrorCode(
ctx,
w,
errors.New("invalid authorization"),
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
"invalid required token",
)
return
}
destructedToken, err := utils.DestructToken(token[1])
if err != nil {
response.ResponseWithErrorCode(
ctx,
w,
err,
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
err.Error(),
)
return
}
userProfile, err := authSvc.GetUserProfile(destructedToken.Email)
2025-02-27 18:59:58 +08:00
if err != nil {
response.ResponseWithErrorCode(
ctx,
w,
err,
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
err.Error(),
)
return
}
response.RespondJsonSuccess(ctx, w, userProfile)
})
}