MCPcopy
hub / github.com/filebrowser/filebrowser / SaveUser

Method SaveUser

auth/hook.go:131–191  ·  view source on GitHub ↗

SaveUser updates the existing user or creates a new one when not found

()

Source from the content-addressed store, hash-verified

129
130// SaveUser updates the existing user or creates a new one when not found
131func (a *HookAuth) SaveUser() (*users.User, error) {
132 u, err := a.Users.Get(a.Server.Root, a.Server.FollowExternalSymlinks, a.Cred.Username)
133 if err != nil && !errors.Is(err, fberrors.ErrNotExist) {
134 return nil, err
135 }
136
137 if u == nil {
138 pass, err := users.ValidateAndHashPwd(a.Cred.Password, a.Settings.MinimumPasswordLength)
139 if err != nil {
140 return nil, err
141 }
142
143 // create user with the provided credentials
144 d := &users.User{
145 Username: a.Cred.Username,
146 Password: pass,
147 Scope: a.Settings.Defaults.Scope,
148 Locale: a.Settings.Defaults.Locale,
149 ViewMode: a.Settings.Defaults.ViewMode,
150 SingleClick: a.Settings.Defaults.SingleClick,
151 RedirectAfterCopyMove: a.Settings.Defaults.RedirectAfterCopyMove,
152 Sorting: a.Settings.Defaults.Sorting,
153 Perm: a.Settings.Defaults.Perm,
154 Commands: a.Settings.Defaults.Commands,
155 DateFormat: a.Settings.Defaults.DateFormat,
156 HideDotfiles: a.Settings.Defaults.HideDotfiles,
157 }
158 u = a.GetUser(d)
159
160 userHome, err := a.Settings.MakeUserDir(u.Username, u.Scope, a.Server.Root)
161 if err != nil {
162 return nil, fmt.Errorf("user: failed to mkdir user home dir: [%s]", userHome)
163 }
164 u.Scope = userHome
165 log.Printf("user: %s, home dir: [%s].", u.Username, userHome)
166
167 err = a.Users.Save(u)
168 if err != nil {
169 return nil, err
170 }
171 } else if p := !users.CheckPwd(a.Cred.Password, u.Password); len(a.Fields.Values) > 1 || p {
172 u = a.GetUser(u)
173
174 // update the password when it doesn't match the current
175 if p {
176 pass, err := users.ValidateAndHashPwd(a.Cred.Password, a.Settings.MinimumPasswordLength)
177 if err != nil {
178 return nil, err
179 }
180 u.Password = pass
181 }
182
183 // update user with provided fields
184 err := a.Users.Update(u)
185 if err != nil {
186 return nil, err
187 }
188 }

Callers 1

AuthMethod · 0.95

Calls 7

GetUserMethod · 0.95
ValidateAndHashPwdFunction · 0.92
CheckPwdFunction · 0.92
MakeUserDirMethod · 0.80
GetMethod · 0.65
SaveMethod · 0.65
UpdateMethod · 0.65

Tested by

no test coverage detected