package authhttp import ( "errors" authsvc "legalgo-BE-go/internal/services/auth" "legalgo-BE-go/internal/utilities/response" "legalgo-BE-go/internal/utilities/utils" "net/http" "strings" "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) { ctx := r.Context() authHeader := r.Header.Get("Authorization") if authHeader == "" { response.ResponseWithErrorCode( ctx, w, errors.New("provided auth is empty"), 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) 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) { ctx := r.Context() authHeader := r.Header.Get("Authorization") if authHeader == "" { response.ResponseWithErrorCode( ctx, w, errors.New("provided auth is empty"), 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) if err != nil { response.ResponseWithErrorCode( ctx, w, err, response.ErrBadRequest.Code, response.ErrBadRequest.HttpCode, err.Error(), ) return } response.RespondJsonSuccess(ctx, w, userProfile) }) }