mirror of
https://github.com/casdoor/casdoor.git
synced 2025-05-23 10:45:47 +08:00
Fix add/update salted password.
This commit is contained in:
parent
18806f07a8
commit
4b9ce5f401
@ -85,6 +85,7 @@ p, *, *, GET, /api/get-default-application, *, *
|
|||||||
p, *, *, GET, /api/get-default-providers, *, *
|
p, *, *, GET, /api/get-default-providers, *, *
|
||||||
p, *, *, POST, /api/upload-avatar, *, *
|
p, *, *, POST, /api/upload-avatar, *, *
|
||||||
p, *, *, POST, /api/unlink, *, *
|
p, *, *, POST, /api/unlink, *, *
|
||||||
|
p, *, *, POST, /api/set-password, *, *
|
||||||
`
|
`
|
||||||
|
|
||||||
sa := stringadapter.NewAdapter(ruleText)
|
sa := stringadapter.NewAdapter(ruleText)
|
||||||
|
@ -153,8 +153,9 @@ func (c *ApiController) SetPassword() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if oldPassword != targetUser.Password {
|
msg := object.CheckPassword(targetUser, oldPassword)
|
||||||
c.ResponseError("Old password wrong.")
|
if msg != "" {
|
||||||
|
c.ResponseError(msg)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ func CheckUserSignup(organizationName string, username string, password string,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkPassword(user *User, password string) string {
|
func CheckPassword(user *User, password string) string {
|
||||||
organization := getOrganization("admin", user.Owner)
|
organization := getOrganization("admin", user.Owner)
|
||||||
|
|
||||||
if organization.PasswordType == "plain" {
|
if organization.PasswordType == "plain" {
|
||||||
@ -87,7 +87,7 @@ func CheckUserLogin(organization string, username string, password string) (*Use
|
|||||||
return nil, "the user is forbidden to sign in, please contact the administrator"
|
return nil, "the user is forbidden to sign in, please contact the administrator"
|
||||||
}
|
}
|
||||||
|
|
||||||
msg := checkPassword(user, password)
|
msg := CheckPassword(user, password)
|
||||||
if msg != "" {
|
if msg != "" {
|
||||||
return nil, msg
|
return nil, msg
|
||||||
}
|
}
|
||||||
|
@ -105,3 +105,7 @@ func GetOrganizationByName(name string) *Organization {
|
|||||||
}
|
}
|
||||||
return &ret
|
return &ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getOrganizationByUser(user *User) *Organization {
|
||||||
|
return getOrganization("admin", user.Owner)
|
||||||
|
}
|
||||||
|
@ -117,6 +117,8 @@ func AddUser(user *User) bool {
|
|||||||
user.Id = util.GenerateId()
|
user.Id = util.GenerateId()
|
||||||
user.UpdateUserHash()
|
user.UpdateUserHash()
|
||||||
user.PreHash = user.Hash
|
user.PreHash = user.Hash
|
||||||
|
organization := getOrganizationByUser(user)
|
||||||
|
user.UpdateUserPassword(organization)
|
||||||
|
|
||||||
affected, err := adapter.Engine.Insert(user)
|
affected, err := adapter.Engine.Insert(user)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -127,9 +129,15 @@ func AddUser(user *User) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func AddUsers(users []*User) bool {
|
func AddUsers(users []*User) bool {
|
||||||
|
if len(users) == 0 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
organization := getOrganizationByUser(users[0])
|
||||||
for _, user := range users {
|
for _, user := range users {
|
||||||
user.UpdateUserHash()
|
user.UpdateUserHash()
|
||||||
user.PreHash = user.Hash
|
user.PreHash = user.Hash
|
||||||
|
user.UpdateUserPassword(organization)
|
||||||
}
|
}
|
||||||
|
|
||||||
affected, err := adapter.Engine.Insert(users)
|
affected, err := adapter.Engine.Insert(users)
|
||||||
@ -215,6 +223,12 @@ func GetUserByFields(organization string, field string) *User {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func SetUserField(user *User, field string, value string) bool {
|
func SetUserField(user *User, field string, value string) bool {
|
||||||
|
if field == "password" {
|
||||||
|
organization := getOrganizationByUser(user)
|
||||||
|
user.UpdateUserPassword(organization)
|
||||||
|
value = user.Password
|
||||||
|
}
|
||||||
|
|
||||||
affected, err := adapter.Engine.Table(user).ID(core.PK{user.Owner, user.Name}).Update(map[string]interface{}{field: value})
|
affected, err := adapter.Engine.Table(user).ID(core.PK{user.Owner, user.Name}).Update(map[string]interface{}{field: value})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
@ -258,6 +272,12 @@ func (user *User) UpdateUserHash() {
|
|||||||
user.Hash = hash
|
user.Hash = hash
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (user *User) UpdateUserPassword(organization *Organization) {
|
||||||
|
if organization.PasswordType == "salt" {
|
||||||
|
user.Password = getSaltedPassword(user.Password, organization.PasswordSalt)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (user *User) GetId() string {
|
func (user *User) GetId() string {
|
||||||
return fmt.Sprintf("%s/%s", user.Owner, user.Name)
|
return fmt.Sprintf("%s/%s", user.Owner, user.Name)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user