From 5985ebcb4a38e15b8c2c1e46898432e95dd76da7 Mon Sep 17 00:00:00 2001 From: areeqakbr Date: Thu, 20 Feb 2025 14:02:12 +0700 Subject: [PATCH] adding data for login information --- delivery/controller/users_controller.go | 4 +-- usecase/auth_usecase.go | 44 ++++++++++++------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/delivery/controller/users_controller.go b/delivery/controller/users_controller.go index a944b0e..99b9320 100644 --- a/delivery/controller/users_controller.go +++ b/delivery/controller/users_controller.go @@ -47,7 +47,7 @@ func (uc *UsersController) Login() gin.HandlerFunc { return } - token, err := uc.ac.Login(login) + token,role,name, err := uc.ac.Login(login) if err != nil { common.ErrorResponses(c, http.StatusUnauthorized, err.Error()) @@ -55,7 +55,7 @@ func (uc *UsersController) Login() gin.HandlerFunc { } - common.SingleResponses(c, "Login success", gin.H{"token": token}) + common.SingleResponses(c, "Login success", gin.H{"token": token, "role": role, "name": name}) } } diff --git a/usecase/auth_usecase.go b/usecase/auth_usecase.go index 344b77d..2d84e7e 100644 --- a/usecase/auth_usecase.go +++ b/usecase/auth_usecase.go @@ -20,7 +20,7 @@ import ( ) type AuthUsecase interface { - Login(login dto.UserLoginDTO) (string, error) + Login(login dto.UserLoginDTO) (string,string, string ,error) Logout(token string) error } @@ -38,20 +38,20 @@ func NewAuthUsecase(userRepo repository.UsersRepo, cfg *config.Config) AuthUseca } } -func (u *authUsecase) Login(login dto.UserLoginDTO) (string, error) { +func (u *authUsecase) Login(login dto.UserLoginDTO) (string, string, string, error) { err := u.validate.Struct(login) if err != nil { - return "", err + return "","","", err } payload, err := json.Marshal(login) if err != nil { - return "", err + return "","","", err } req, err := http.NewRequest("POST", u.cfg.LoginAPI, bytes.NewBuffer(payload)) if err != nil { - return "", err + return "","","", err } req.Header.Set("Content-Type", "application/json") @@ -60,69 +60,69 @@ func (u *authUsecase) Login(login dto.UserLoginDTO) (string, error) { client := &http.Client{} resp, err := client.Do(req) if err != nil { - return "", err + return "","","", err } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { - return "", errors.New("wrong password or username") + return "","","", errors.New("wrong password or username") } body, err := ioutil.ReadAll(resp.Body) if err != nil { - return "", err + return "","","", err } var authResponse res.AuthResponses err = json.Unmarshal(body, &authResponse) if err != nil { - return "", err + return "","","", err } token := authResponse.Token meReq, err := http.NewRequest("POST", u.cfg.AuthMeAPI, nil) if err != nil { - return "", err + return "","","", err } meReq.Header.Set("Authorization", "Bearer "+token) meReq.Header.Set("Accept", "application/json") meResp, err := client.Do(meReq) if err != nil { - return "",err + return "","","", err } defer meResp.Body.Close() if meResp.StatusCode != http.StatusOK { - return "", errors.New("failed to validate token: " + meResp.Status) + return "","","", errors.New("failed to validate token: " + meResp.Status) } meBody, err := ioutil.ReadAll(meResp.Body) if err != nil { - return "", err + return "","","", err } var meResponse res.AuthMeResponse err = json.Unmarshal(meBody, &meResponse) if err != nil { - return "", err + return "","","", err } departemen := meResponse.Data.Departemen if departemen != "Teknisi" { - return "", errors.New("user is not a technician") + return "","","", errors.New("user is not a technician") } role , err := u.userRepo.GetRoleByDepartment(departemen) if err != nil { - return "", err + return "","","", err } password, err := utils.HashPassword(login.Password) if err != nil { - return "error while hasing password: ", err + return "error while hasing password: ","", "", err } isUserExist, err := u.userRepo.GetUserByUsername(login.Username) @@ -130,12 +130,12 @@ func (u *authUsecase) Login(login dto.UserLoginDTO) (string, error) { if isUserExist.ID != uuid.Nil { // Validate the password if !utils.CheckPasswordHash(login.Password, isUserExist.Password) { - return "", errors.New("incorrect password") + return "","","", errors.New("incorrect password") } - return token, nil + return token, role.Name, isUserExist.Name, nil }else if err != nil && err != gorm.ErrRecordNotFound { - return "ERROR WHILE SEARCHING USERNAME", err + return "ERROR WHILE SEARCHING USERNAME","", "", err } @@ -151,10 +151,10 @@ func (u *authUsecase) Login(login dto.UserLoginDTO) (string, error) { err = u.userRepo.Post(user) if err != nil { - return "", err + return "","","", err } - return token,nil + return token, user.Role.Name, user.Name, nil } func (u *authUsecase) Logout(token string) error {