MCPcopy Create free account
hub / github.com/cloudreve/cloudreve / Patch

Method Patch

service/user/setting.go:237–337  ·  view source on GitHub ↗
(c *gin.Context)

Source from the content-addressed store, hash-verified

235)
236
237func (s *PatchUserSetting) Patch(c *gin.Context) error {
238 dep := dependency.FromContext(c)
239 u := inventory.UserFromContext(c)
240 userClient := dep.UserClient()
241 saveSetting := false
242
243 if s.Nick != nil {
244 if _, err := userClient.UpdateNickname(c, u, *s.Nick); err != nil {
245 return serializer.NewError(serializer.CodeDBError, "Failed to update user nick", err)
246 }
247 }
248
249 if s.Language != nil {
250 u.Settings.Language = *s.Language
251 saveSetting = true
252 }
253
254 if s.PreferredTheme != nil {
255 u.Settings.PreferredTheme = *s.PreferredTheme
256 saveSetting = true
257 }
258
259 if s.VersionRetentionEnabled != nil {
260 u.Settings.VersionRetention = *s.VersionRetentionEnabled
261 saveSetting = true
262 }
263
264 if s.VersionRetentionExt != nil {
265 u.Settings.VersionRetentionExt = *s.VersionRetentionExt
266 saveSetting = true
267 }
268
269 if s.VersionRetentionMax != nil {
270 u.Settings.VersionRetentionMax = *s.VersionRetentionMax
271 saveSetting = true
272 }
273
274 if s.DisableViewSync != nil {
275 u.Settings.DisableViewSync = *s.DisableViewSync
276 saveSetting = true
277 }
278
279 if s.ShareLinksInProfile != nil {
280 u.Settings.ShareLinksInProfile = types.ShareLinksInProfileLevel(*s.ShareLinksInProfile)
281 saveSetting = true
282 }
283
284 if s.CurrentPassword != nil && s.NewPassword != nil {
285 if err := auth.CheckScope(c, types.ScopeUserSecurityInfoWrite); err != nil {
286 return err
287 }
288
289 if err := inventory.CheckPassword(u, *s.CurrentPassword); err != nil {
290 return serializer.NewError(serializer.CodeIncorrectPassword, "Incorrect password", err)
291 }
292
293 if _, err := userClient.UpdatePassword(c, u, *s.NewPassword); err != nil {
294 return serializer.NewError(serializer.CodeDBError, "Failed to update user password", err)

Callers

nothing calls this directly

Calls 13

FromContextFunction · 0.92
UserFromContextFunction · 0.92
NewErrorFunction · 0.92
ShareLinksInProfileLevelTypeAlias · 0.92
CheckScopeFunction · 0.92
CheckPasswordFunction · 0.92
UserClientMethod · 0.65
UpdateNicknameMethod · 0.65
UpdatePasswordMethod · 0.65
KVMethod · 0.65
GetMethod · 0.65
UpdateTwoFASecretMethod · 0.65

Tested by

no test coverage detected