43 lines
1 KiB
Text
43 lines
1 KiB
Text
|
#!/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()
|