szurubooru/server/reset-password

43 lines
1 KiB
Text
Raw Normal View History

#!/usr/bin/env python3
'''
If the automatic email-based password reset is not enabled, system
administrators can still manually reset passwords with the help of
this script.
'''
from sys import stderr
from getpass import getpass
from szurubooru import db
from szurubooru.func import users as userfuncs
def main():
username = input('Enter username or email: ')
try:
user = userfuncs.get_user_by_name_or_email(username)
except userfuncs.UserNotFoundError as e:
print(e, file=stderr)
return
new_password = getpass('Enter new password for \'%s\': ' % user.name)
check_password = getpass('Re-enter password: ')
if check_password != new_password:
print('Passwords do not match.', file=stderr)
return
try:
userfuncs.update_user_password(user, new_password)
except userfuncs.InvalidPasswordError as e:
print(e, file=stderr)
return
db.get_session().commit()
print('Sucessfully changed password for \'%s\'' % user.name)
if __name__ == '__main__':
main()