adding data for login information
This commit is contained in:
parent
e9d2aeda00
commit
5985ebcb4a
|
|
@ -47,7 +47,7 @@ func (uc *UsersController) Login() gin.HandlerFunc {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
token, err := uc.ac.Login(login)
|
token,role,name, err := uc.ac.Login(login)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
common.ErrorResponses(c, http.StatusUnauthorized, err.Error())
|
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})
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type AuthUsecase interface {
|
type AuthUsecase interface {
|
||||||
Login(login dto.UserLoginDTO) (string, error)
|
Login(login dto.UserLoginDTO) (string,string, string ,error)
|
||||||
Logout(token 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)
|
err := u.validate.Struct(login)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "","","", err
|
||||||
}
|
}
|
||||||
|
|
||||||
payload, err := json.Marshal(login)
|
payload, err := json.Marshal(login)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "","","", err
|
||||||
}
|
}
|
||||||
|
|
||||||
req, err := http.NewRequest("POST", u.cfg.LoginAPI, bytes.NewBuffer(payload))
|
req, err := http.NewRequest("POST", u.cfg.LoginAPI, bytes.NewBuffer(payload))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "","","", err
|
||||||
}
|
}
|
||||||
|
|
||||||
req.Header.Set("Content-Type", "application/json")
|
req.Header.Set("Content-Type", "application/json")
|
||||||
|
|
@ -60,69 +60,69 @@ func (u *authUsecase) Login(login dto.UserLoginDTO) (string, error) {
|
||||||
client := &http.Client{}
|
client := &http.Client{}
|
||||||
resp, err := client.Do(req)
|
resp, err := client.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "","","", err
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
if resp.StatusCode != http.StatusOK {
|
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)
|
body, err := ioutil.ReadAll(resp.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "","","", err
|
||||||
}
|
}
|
||||||
|
|
||||||
var authResponse res.AuthResponses
|
var authResponse res.AuthResponses
|
||||||
err = json.Unmarshal(body, &authResponse)
|
err = json.Unmarshal(body, &authResponse)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "","","", err
|
||||||
}
|
}
|
||||||
|
|
||||||
token := authResponse.Token
|
token := authResponse.Token
|
||||||
|
|
||||||
meReq, err := http.NewRequest("POST", u.cfg.AuthMeAPI, nil)
|
meReq, err := http.NewRequest("POST", u.cfg.AuthMeAPI, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "","","", err
|
||||||
}
|
}
|
||||||
meReq.Header.Set("Authorization", "Bearer "+token)
|
meReq.Header.Set("Authorization", "Bearer "+token)
|
||||||
meReq.Header.Set("Accept", "application/json")
|
meReq.Header.Set("Accept", "application/json")
|
||||||
|
|
||||||
meResp, err := client.Do(meReq)
|
meResp, err := client.Do(meReq)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "",err
|
return "","","", err
|
||||||
}
|
}
|
||||||
defer meResp.Body.Close()
|
defer meResp.Body.Close()
|
||||||
|
|
||||||
if meResp.StatusCode != http.StatusOK {
|
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)
|
meBody, err := ioutil.ReadAll(meResp.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "","","", err
|
||||||
}
|
}
|
||||||
|
|
||||||
var meResponse res.AuthMeResponse
|
var meResponse res.AuthMeResponse
|
||||||
err = json.Unmarshal(meBody, &meResponse)
|
err = json.Unmarshal(meBody, &meResponse)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "","","", err
|
||||||
}
|
}
|
||||||
|
|
||||||
departemen := meResponse.Data.Departemen
|
departemen := meResponse.Data.Departemen
|
||||||
if departemen != "Teknisi" {
|
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)
|
role , err := u.userRepo.GetRoleByDepartment(departemen)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "","","", err
|
||||||
}
|
}
|
||||||
|
|
||||||
password, err := utils.HashPassword(login.Password)
|
password, err := utils.HashPassword(login.Password)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "error while hasing password: ", err
|
return "error while hasing password: ","", "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
isUserExist, err := u.userRepo.GetUserByUsername(login.Username)
|
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 {
|
if isUserExist.ID != uuid.Nil {
|
||||||
// Validate the password
|
// Validate the password
|
||||||
if !utils.CheckPasswordHash(login.Password, isUserExist.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 {
|
}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)
|
err = u.userRepo.Post(user)
|
||||||
if err != nil {
|
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 {
|
func (u *authUsecase) Logout(token string) error {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue