first commit
This commit is contained in:
123
services/user/user.routes.go
Normal file
123
services/user/user.routes.go
Normal file
@@ -0,0 +1,123 @@
|
||||
package user
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"github.com/golang-jwt/jwt/v5"
|
||||
"github.com/gorilla/mux"
|
||||
"sismedika.com/sas/westone/services/auth"
|
||||
"sismedika.com/sas/westone/types"
|
||||
"sismedika.com/sas/westone/utils"
|
||||
)
|
||||
|
||||
type Handler struct {
|
||||
store types.UserStore
|
||||
errorStore types.ErrorLogStore
|
||||
}
|
||||
|
||||
func NewHandler(store types.UserStore, errorStore types.ErrorLogStore) *Handler {
|
||||
return &Handler{
|
||||
store: store,
|
||||
errorStore: errorStore,
|
||||
}
|
||||
}
|
||||
|
||||
func (h *Handler) RegisterRoutes(router *mux.Router) {
|
||||
router.HandleFunc("/login", h.handleLogin).Methods("POST")
|
||||
router.HandleFunc("/register", h.handleRegister).Methods("POST")
|
||||
|
||||
// admin routes
|
||||
// router.HandleFunc("/users/{userID}", auth.WithJWTAuth(h.handleGetUser)).Methods(http.MethodGet)
|
||||
}
|
||||
|
||||
func (h *Handler) handleLogin(w http.ResponseWriter, r *http.Request) {
|
||||
// var payload types.SignInPayload
|
||||
// if err := utils.ParseJSON(r, &payload); err != nil {
|
||||
// utils.WriteError(w, http.StatusBadRequest, err)
|
||||
// return
|
||||
// }
|
||||
|
||||
// if err := utils.Validate.Struct(payload); err != nil {
|
||||
// errors := err.(validator.ValidationErrors)
|
||||
// utils.WriteError(w, http.StatusBadRequest, fmt.Errorf("invalid payload: %v", errors))
|
||||
// return
|
||||
// }
|
||||
|
||||
// hashedPassword := auth.HashWithMD5(payload.Password)
|
||||
// response, err := h.store.SignIn(payload.Email, hashedPassword)
|
||||
// if err != nil {
|
||||
// var logError *utils.LogError
|
||||
// if errors.As(err, &logError) {
|
||||
// h.errorStore.CreateErrorLog(*logError)
|
||||
// utils.WriteErrorLog(w, http.StatusBadRequest, *logError)
|
||||
// }
|
||||
// return
|
||||
// }
|
||||
// // remoteAddr := r.RemoteAddr
|
||||
// // userAgent := r.UserAgent()
|
||||
// // response.IP = remoteAddr
|
||||
// // response.Agent = userAgent
|
||||
|
||||
// secret := []byte(configs.Envs.JWTSecret)
|
||||
// token, err := auth.CreateJWT(secret, *response)
|
||||
// if err != nil {
|
||||
// utils.WriteError(w, http.StatusInternalServerError, err)
|
||||
// return
|
||||
// }
|
||||
|
||||
// utils.WriteJSONLogin(w, http.StatusOK, response, token, "westone")
|
||||
}
|
||||
|
||||
func (h *Handler) handleRegister(w http.ResponseWriter, r *http.Request) {
|
||||
// var user types.RegisterUserPayload
|
||||
// if err := utils.ParseJSON(r, &user); err != nil {
|
||||
// utils.WriteError(w, http.StatusBadRequest, err)
|
||||
// return
|
||||
// }
|
||||
|
||||
// if err := utils.Validate.Struct(user); err != nil {
|
||||
// errors := err.(validator.ValidationErrors)
|
||||
// utils.WriteError(w, http.StatusBadRequest, fmt.Errorf("invalid payload: %v", errors))
|
||||
// return
|
||||
// }
|
||||
|
||||
// // check if user exists
|
||||
// _, err := h.store.GetUserByEmail(user.Email)
|
||||
// if err == nil {
|
||||
// utils.WriteError(w, http.StatusBadRequest, fmt.Errorf("user with email %s already exists", user.Email))
|
||||
// return
|
||||
// }
|
||||
|
||||
// // hash password
|
||||
// hashedPassword, err := auth.HashPassword(user.Password)
|
||||
// if err != nil {
|
||||
// utils.WriteError(w, http.StatusInternalServerError, err)
|
||||
// return
|
||||
// }
|
||||
|
||||
// err = h.store.CreateUser(types.User{
|
||||
// FirstName: user.FirstName,
|
||||
// LastName: user.LastName,
|
||||
// Email: user.Email,
|
||||
// Password: hashedPassword,
|
||||
// })
|
||||
// if err != nil {
|
||||
// utils.WriteError(w, http.StatusInternalServerError, err)
|
||||
// return
|
||||
// }
|
||||
|
||||
// utils.WriteJSON(w, http.StatusCreated, nil)
|
||||
}
|
||||
|
||||
func (h *Handler) handleGetUser(w http.ResponseWriter, r *http.Request) {
|
||||
claims, ok := r.Context().Value(auth.UserContextKey).(jwt.MapClaims)
|
||||
if !ok {
|
||||
utils.WriteError(w, http.StatusInternalServerError, fmt.Errorf("token not found in context"))
|
||||
return
|
||||
}
|
||||
|
||||
email := claims["M_UserEmail"]
|
||||
|
||||
utils.WriteJSON(w, http.StatusOK, email)
|
||||
}
|
||||
Reference in New Issue
Block a user