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"
|
2025-02-28 12:18:47 +08:00
|
|
|
"legalgo-BE-go/internal/utilities/utils"
|
2025-02-27 18:59:58 +08:00
|
|
|
"net/http"
|
2025-02-28 12:18:47 +08:00
|
|
|
"strings"
|
2025-02-27 18:59:58 +08:00
|
|
|
|
|
|
|
|
"github.com/go-chi/chi/v5"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func GetStaffProfile(
|
|
|
|
|
router chi.Router,
|
|
|
|
|
authSvc authsvc.AuthIntf,
|
|
|
|
|
) {
|
2025-02-28 12:18:47 +08:00
|
|
|
router.Get("/staff/profile", func(w http.ResponseWriter, r *http.Request) {
|
2025-02-27 18:59:58 +08:00
|
|
|
ctx := r.Context()
|
2025-02-28 12:18:47 +08:00
|
|
|
authHeader := r.Header.Get("Authorization")
|
|
|
|
|
|
|
|
|
|
if authHeader == "" {
|
2025-02-27 18:59:58 +08:00
|
|
|
response.ResponseWithErrorCode(
|
|
|
|
|
ctx,
|
|
|
|
|
w,
|
2025-02-28 12:18:47 +08:00
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
|
2025-02-28 12:18:47 +08:00
|
|
|
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,
|
|
|
|
|
) {
|
2025-02-28 12:18:47 +08:00
|
|
|
router.Get("/user/profile", func(w http.ResponseWriter, r *http.Request) {
|
2025-02-27 18:59:58 +08:00
|
|
|
ctx := r.Context()
|
2025-02-28 12:18:47 +08:00
|
|
|
authHeader := r.Header.Get("Authorization")
|
|
|
|
|
|
|
|
|
|
if authHeader == "" {
|
2025-02-27 18:59:58 +08:00
|
|
|
response.ResponseWithErrorCode(
|
|
|
|
|
ctx,
|
|
|
|
|
w,
|
2025-02-28 12:18:47 +08:00
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
|
2025-02-28 12:18:47 +08:00
|
|
|
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)
|
|
|
|
|
})
|
|
|
|
|
}
|