fix: Fix user creation on proxy auth (#3666)
* Fix user creation on proxy auth * Refactoring --------- Co-authored-by: Oleg Lobanov <oleg@lobanov.me>pull/3543/head
							parent
							
								
									bbdd313705
								
							
						
					
					
						commit
						5300d00d2e
					
				|  | @ -23,39 +23,45 @@ func (a ProxyAuth) Auth(r *http.Request, usr users.Store, setting *settings.Sett | |||
| 	username := r.Header.Get(a.Header) | ||||
| 	user, err := usr.Get(srv.Root, username) | ||||
| 	if errors.Is(err, fbErrors.ErrNotExist) { | ||||
| 		randomPasswordBytes := make([]byte, 32) //nolint:gomnd
 | ||||
| 		_, err = rand.Read(randomPasswordBytes) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		return a.createUser(usr, setting, srv, username) | ||||
| 	} | ||||
| 	return user, err | ||||
| } | ||||
| 
 | ||||
| 		var hashedRandomPassword string | ||||
| 		hashedRandomPassword, err = users.HashPwd(string(randomPasswordBytes)) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 
 | ||||
| 		user = &users.User{ | ||||
| 			Username:     username, | ||||
| 			Password:     hashedRandomPassword, | ||||
| 			LockPassword: true, | ||||
| 		} | ||||
| 		setting.Defaults.Apply(user) | ||||
| 
 | ||||
| 		var userHome string | ||||
| 		userHome, err = setting.MakeUserDir(user.Username, user.Scope, srv.Root) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		user.Scope = userHome | ||||
| 
 | ||||
| 		err = usr.Save(user) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| func (a ProxyAuth) createUser(usr users.Store, setting *settings.Settings, srv *settings.Server, username string) (*users.User, error) { | ||||
| 	const passwordSize = 32 | ||||
| 	randomPasswordBytes := make([]byte, passwordSize) | ||||
| 	_, err := rand.Read(randomPasswordBytes) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	return user, err | ||||
| 	var hashedRandomPassword string | ||||
| 	hashedRandomPassword, err = users.HashPwd(string(randomPasswordBytes)) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	user := &users.User{ | ||||
| 		Username:     username, | ||||
| 		Password:     hashedRandomPassword, | ||||
| 		LockPassword: true, | ||||
| 	} | ||||
| 	setting.Defaults.Apply(user) | ||||
| 
 | ||||
| 	var userHome string | ||||
| 	userHome, err = setting.MakeUserDir(user.Username, user.Scope, srv.Root) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	user.Scope = userHome | ||||
| 
 | ||||
| 	err = usr.Save(user) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	return user, nil | ||||
| } | ||||
| 
 | ||||
| // LoginPage tells that proxy auth doesn't require a login page.
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Arran Hobson Sayers
						Arran Hobson Sayers