%PDF- %PDF-
Direktori : /lib/calibre/calibre/srv/ |
Current File : //lib/calibre/calibre/srv/users_api.py |
#!/usr/bin/env python3 # License: GPLv3 Copyright: 2017, Kovid Goyal <kovid at kovidgoyal.net> import json from calibre import as_unicode from calibre.srv.errors import HTTPBadRequest, HTTPForbidden from calibre.srv.routes import endpoint from calibre.srv.users import validate_password @endpoint('/users/change-pw', methods={'POST'}) def change_pw(ctx, rd): user = rd.username or None if user is None: raise HTTPForbidden('Anonymous users are not allowed to change passwords') try: pw = json.loads(rd.request_body_file.read()) oldpw, newpw = pw['oldpw'], pw['newpw'] except Exception: raise HTTPBadRequest('No decodable password found') if oldpw != ctx.user_manager.get(user): raise HTTPBadRequest(_('Existing password is incorrect')) err = validate_password(newpw) if err: raise HTTPBadRequest(err) try: ctx.user_manager.change_password(user, newpw) except Exception as err: raise HTTPBadRequest(as_unicode(err)) ctx.log.warn('Changed password for user', user) return f'password for {user} changed'