feat (auth): add user division position

This commit is contained in:
dpurbosakti
2025-10-06 11:54:56 +07:00
parent e7611c9078
commit 8e1fb56570
4 changed files with 81 additions and 32 deletions

No files matched your search

@@ -72,6 +72,11 @@ func GenToken(input eu.LoginDto) (*d.Data, error) {
return nil, d.FieldErrors{"authentication": d.FieldError{Code: "auth-login-unverified", Message: el.GenMessage("auth-login-unverified")}}
}
userDivisionPositions, err := getDivisionPosition(user.Id)
if err != nil {
return nil, d.FieldErrors{"authentication": d.FieldError{Code: "auth-getData-failed", Message: el.GenMessage("auth-getData-failed")}}
}
// Access token prep
id, err := uuid.NewRandom()
if err != nil {
@@ -89,11 +94,10 @@ func GenToken(input eu.LoginDto) (*d.Data, error) {
atClaims := jwt.MapClaims{}
atClaims["user_id"] = user.Id
atClaims["user_name"] = user.Name
// atClaims["user_email"] = user.Email
atClaims["user_position_code"] = user.Position_Code
// atClaims["user_ref_id"] = user.Ref_Id
atClaims["exp"] = atExpires
atClaims["uuid"] = aUuid
atClaims["user_division_positions"] = userDivisionPositions
at := jwt.NewWithClaims(jwt.SigningMethodHS256, atClaims)
ats, err := at.SignedString([]byte(atSecretKey))
if err != nil {
@@ -122,10 +126,11 @@ func GenToken(input eu.LoginDto) (*d.Data, error) {
"status": "verified",
},
Data: d.II{
"user_id": strconv.Itoa(int(user.Id)),
"user_name": user.Name,
"user_position_code": user.Position_Code,
"accessToken": ats,
"user_id": strconv.Itoa(int(user.Id)),
"user_name": user.Name,
"user_position_code": user.Position_Code,
"accessToken": ats,
"user_division_positions": userDivisionPositions,
},
}, nil
}
@@ -181,24 +186,31 @@ func ExtractToken(r *http.Request, tokenType TokenType) (data *pa.AuthInfo, err
return nil, d.FieldError{Code: "token-unidentified", Message: el.GenMessage("token-unidentified")}
}
user_name := fmt.Sprintf("%v", claims["user_name"])
// user_email := ""
// if v, exist := claims["user_email"]; exist && v != nil {
// user_email = v.(string)
// }
// ref_id := 0
// if v, exist := claims["user_ref_id"]; exist && v != nil {
// tmp := v.(float64)
// ref_id = int(tmp)
// }
var userDivisionPositions []pa.DivisionPosition
if raw, ok := claims["user_division_position"]; ok && raw != nil {
if list, ok := raw.([]interface{}); ok {
for _, item := range list {
if m, ok := item.(map[string]interface{}); ok {
dp := pa.DivisionPosition{
Division_Code: fmt.Sprintf("%v", m["Division_Code"]),
DivisionPosition_Code: fmt.Sprintf("%v", m["DivisionPosition_Code"]),
}
userDivisionPositions = append(userDivisionPositions, dp)
}
}
}
}
position_code := ""
if v, exist := claims["user_position_code"]; exist && v != nil {
position_code = v.(string)
}
data = &pa.AuthInfo{
Uuid: accessUuid,
User_Id: uint(user_id),
User_Name: user_name,
User_Position_Code: position_code,
Uuid: accessUuid,
User_Id: uint(user_id),
User_Name: user_name,
User_Position_Code: position_code,
User_DivisionPositions: userDivisionPositions,
}
return
}