fix: update users
This commit is contained in:
parent
3a8ebc6715
commit
4b814cbdc5
|
|
@ -73,8 +73,8 @@ type UsersUpdateRequest struct {
|
||||||
Username string `json:"username" validate:"required,lowercase"`
|
Username string `json:"username" validate:"required,lowercase"`
|
||||||
Email string `json:"email" validate:"required,email"`
|
Email string `json:"email" validate:"required,email"`
|
||||||
Fullname string `json:"fullname" validate:"required"`
|
Fullname string `json:"fullname" validate:"required"`
|
||||||
UserLevelId uint `json:"userLevelId" validate:"required"`
|
UserLevelId *uint `json:"userLevelId"`
|
||||||
UserRoleId uint `json:"userRoleId" validate:"required"`
|
UserRoleId *uint `json:"userRoleId"`
|
||||||
PhoneNumber *string `json:"phoneNumber"`
|
PhoneNumber *string `json:"phoneNumber"`
|
||||||
Address *string `json:"address"`
|
Address *string `json:"address"`
|
||||||
WorkType *string `json:"workType"`
|
WorkType *string `json:"workType"`
|
||||||
|
|
@ -88,8 +88,27 @@ type UsersUpdateRequest struct {
|
||||||
StatusId *int `json:"statusId"`
|
StatusId *int `json:"statusId"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// type UsersUpdateRequest struct {
|
||||||
|
// Username string `json:"username" validate:"required,lowercase"`
|
||||||
|
// Email string `json:"email" validate:"required,email"`
|
||||||
|
// Fullname string `json:"fullname" validate:"required"`
|
||||||
|
// UserLevelId uint `json:"userLevelId" validate:"required"`
|
||||||
|
// UserRoleId uint `json:"userRoleId" validate:"required"`
|
||||||
|
// PhoneNumber *string `json:"phoneNumber"`
|
||||||
|
// Address *string `json:"address"`
|
||||||
|
// WorkType *string `json:"workType"`
|
||||||
|
// GenderType *string `json:"genderType"`
|
||||||
|
// IdentityType *string `json:"identityType"`
|
||||||
|
// IdentityGroup *string `json:"identityGroup"`
|
||||||
|
// IdentityGroupNumber *string `json:"identityGroupNumber"`
|
||||||
|
// IdentityNumber *string `json:"identityNumber"`
|
||||||
|
// DateOfBirth *string `json:"dateOfBirth"`
|
||||||
|
// LastEducation *string `json:"lastEducation"`
|
||||||
|
// StatusId *int `json:"statusId"`
|
||||||
|
// }
|
||||||
|
|
||||||
func (req UsersUpdateRequest) ToEntity() *users.Users {
|
func (req UsersUpdateRequest) ToEntity() *users.Users {
|
||||||
return &users.Users{
|
entity := &users.Users{
|
||||||
Username: req.Username,
|
Username: req.Username,
|
||||||
Email: req.Email,
|
Email: req.Email,
|
||||||
Fullname: req.Fullname,
|
Fullname: req.Fullname,
|
||||||
|
|
@ -103,13 +122,44 @@ func (req UsersUpdateRequest) ToEntity() *users.Users {
|
||||||
IdentityNumber: req.IdentityNumber,
|
IdentityNumber: req.IdentityNumber,
|
||||||
DateOfBirth: req.DateOfBirth,
|
DateOfBirth: req.DateOfBirth,
|
||||||
LastEducation: req.LastEducation,
|
LastEducation: req.LastEducation,
|
||||||
UserRoleId: req.UserRoleId,
|
|
||||||
StatusId: req.StatusId,
|
StatusId: req.StatusId,
|
||||||
UserLevelId: req.UserLevelId,
|
|
||||||
UpdatedAt: time.Now(),
|
UpdatedAt: time.Now(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ⬇️ HANYA SET JIKA DIKIRIM
|
||||||
|
if req.UserLevelId != nil {
|
||||||
|
entity.UserLevelId = *req.UserLevelId
|
||||||
|
}
|
||||||
|
|
||||||
|
if req.UserRoleId != nil {
|
||||||
|
entity.UserRoleId = *req.UserRoleId
|
||||||
|
}
|
||||||
|
|
||||||
|
return entity
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// func (req UsersUpdateRequest) ToEntity() *users.Users {
|
||||||
|
// return &users.Users{
|
||||||
|
// Username: req.Username,
|
||||||
|
// Email: req.Email,
|
||||||
|
// Fullname: req.Fullname,
|
||||||
|
// Address: req.Address,
|
||||||
|
// PhoneNumber: req.PhoneNumber,
|
||||||
|
// WorkType: req.WorkType,
|
||||||
|
// GenderType: req.GenderType,
|
||||||
|
// IdentityType: req.IdentityType,
|
||||||
|
// IdentityGroup: req.IdentityGroup,
|
||||||
|
// IdentityGroupNumber: req.IdentityGroupNumber,
|
||||||
|
// IdentityNumber: req.IdentityNumber,
|
||||||
|
// DateOfBirth: req.DateOfBirth,
|
||||||
|
// LastEducation: req.LastEducation,
|
||||||
|
// UserRoleId: req.UserRoleId,
|
||||||
|
// StatusId: req.StatusId,
|
||||||
|
// UserLevelId: req.UserLevelId,
|
||||||
|
// UpdatedAt: time.Now(),
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
type UserLogin struct {
|
type UserLogin struct {
|
||||||
Username *string `json:"username"`
|
Username *string `json:"username"`
|
||||||
Password *string `json:"password"`
|
Password *string `json:"password"`
|
||||||
|
|
|
||||||
|
|
@ -375,25 +375,80 @@ func (_i *usersService) Update(authToken string, id uint, req request.UsersUpdat
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_i.Log.Info().Interface("data", req).Msg("")
|
// 1️⃣ Ambil data user lama
|
||||||
newReq := req.ToEntity()
|
existingUser, err := _i.Repo.FindOne(clientId, id)
|
||||||
|
|
||||||
findUser, err := _i.Repo.FindOne(clientId, id)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = _i.Keycloak.UpdateUser(findUser.KeycloakId, req.Fullname, req.Email)
|
// 2️⃣ Update Keycloak (nama & email)
|
||||||
|
err = _i.Keycloak.UpdateUser(existingUser.KeycloakId, req.Fullname, req.Email)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set ClientId on entity
|
// 3️⃣ Update field yang BOLEH diubah
|
||||||
newReq.ClientId = clientId
|
existingUser.Username = req.Username
|
||||||
|
existingUser.Email = req.Email
|
||||||
|
existingUser.Fullname = req.Fullname
|
||||||
|
existingUser.Address = req.Address
|
||||||
|
existingUser.PhoneNumber = req.PhoneNumber
|
||||||
|
existingUser.WorkType = req.WorkType
|
||||||
|
existingUser.GenderType = req.GenderType
|
||||||
|
existingUser.IdentityType = req.IdentityType
|
||||||
|
existingUser.IdentityGroup = req.IdentityGroup
|
||||||
|
existingUser.IdentityGroupNumber = req.IdentityGroupNumber
|
||||||
|
existingUser.IdentityNumber = req.IdentityNumber
|
||||||
|
existingUser.DateOfBirth = req.DateOfBirth
|
||||||
|
existingUser.LastEducation = req.LastEducation
|
||||||
|
existingUser.StatusId = req.StatusId
|
||||||
|
existingUser.UpdatedAt = time.Now()
|
||||||
|
|
||||||
return _i.Repo.Update(clientId, id, newReq)
|
// 4️⃣ Role & Level HANYA jika dikirim
|
||||||
|
if req.UserLevelId != nil {
|
||||||
|
existingUser.UserLevelId = *req.UserLevelId
|
||||||
|
}
|
||||||
|
if req.UserRoleId != nil {
|
||||||
|
existingUser.UserRoleId = *req.UserRoleId
|
||||||
|
}
|
||||||
|
|
||||||
|
// 5️⃣ Pastikan clientId tidak hilang
|
||||||
|
existingUser.ClientId = clientId
|
||||||
|
|
||||||
|
// 6️⃣ Simpan
|
||||||
|
return _i.Repo.Update(clientId, id, existingUser)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// func (_i *usersService) Update(authToken string, id uint, req request.UsersUpdateRequest) (err error) {
|
||||||
|
// // Extract clientId from authToken
|
||||||
|
// var clientId *uuid.UUID
|
||||||
|
// if authToken != "" {
|
||||||
|
// user := utilSvc.GetUserInfo(_i.Log, _i.Repo, authToken)
|
||||||
|
// if user != nil && user.ClientId != nil {
|
||||||
|
// clientId = user.ClientId
|
||||||
|
// _i.Log.Info().Interface("clientId", clientId).Msg("Extracted clientId from auth token")
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// _i.Log.Info().Interface("data", req).Msg("")
|
||||||
|
// newReq := req.ToEntity()
|
||||||
|
|
||||||
|
// findUser, err := _i.Repo.FindOne(clientId, id)
|
||||||
|
// if err != nil {
|
||||||
|
// return err
|
||||||
|
// }
|
||||||
|
|
||||||
|
// err = _i.Keycloak.UpdateUser(findUser.KeycloakId, req.Fullname, req.Email)
|
||||||
|
// if err != nil {
|
||||||
|
// return err
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // Set ClientId on entity
|
||||||
|
// newReq.ClientId = clientId
|
||||||
|
|
||||||
|
// return _i.Repo.Update(clientId, id, newReq)
|
||||||
|
// }
|
||||||
|
|
||||||
func (_i *usersService) Delete(authToken string, id uint) error {
|
func (_i *usersService) Delete(authToken string, id uint) error {
|
||||||
// Extract clientId from authToken
|
// Extract clientId from authToken
|
||||||
var clientId *uuid.UUID
|
var clientId *uuid.UUID
|
||||||
|
|
|
||||||
|
|
@ -22127,8 +22127,6 @@ const docTemplate = `{
|
||||||
"required": [
|
"required": [
|
||||||
"email",
|
"email",
|
||||||
"fullname",
|
"fullname",
|
||||||
"userLevelId",
|
|
||||||
"userRoleId",
|
|
||||||
"username"
|
"username"
|
||||||
],
|
],
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|
|
||||||
|
|
@ -22116,8 +22116,6 @@
|
||||||
"required": [
|
"required": [
|
||||||
"email",
|
"email",
|
||||||
"fullname",
|
"fullname",
|
||||||
"userLevelId",
|
|
||||||
"userRoleId",
|
|
||||||
"username"
|
"username"
|
||||||
],
|
],
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|
|
||||||
|
|
@ -1915,8 +1915,6 @@ definitions:
|
||||||
required:
|
required:
|
||||||
- email
|
- email
|
||||||
- fullname
|
- fullname
|
||||||
- userLevelId
|
|
||||||
- userRoleId
|
|
||||||
- username
|
- username
|
||||||
type: object
|
type: object
|
||||||
response.BadRequestError:
|
response.BadRequestError:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue