42 lines
1 KiB
Python
Executable file
42 lines
1 KiB
Python
Executable file
#!/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()
|