diff --git a/backend/config/management/commands/ta_change_password.py b/backend/config/management/commands/ta_change_password.py new file mode 100644 index 00000000..4d2f1bb5 --- /dev/null +++ b/backend/config/management/commands/ta_change_password.py @@ -0,0 +1,36 @@ +"""change user password""" + +from django.contrib.auth import get_user_model +from django.core.management.base import BaseCommand, CommandError + +User = get_user_model() + + +class Command(BaseCommand): + """change password""" + + help = "Change Password of user" + + def add_arguments(self, parser): + parser.add_argument("username", type=str) + parser.add_argument("password", type=str) + + def handle(self, *args, **kwargs): + """entry point""" + username = kwargs["username"] + new_password = kwargs["password"] + self.stdout.write(f"Changing password for user '{username}'") + try: + user = User.objects.get(name=username) + except User.DoesNotExist as err: + message = f"Username '{username}' does not exist. " + message += "Available username(s) are:\n" + message += ", ".join([i.name for i in User.objects.all()]) + raise CommandError(message) from err + + user.set_password(new_password) + user.save() + + self.stdout.write( + self.style.SUCCESS(f" ✓ updated password for user '{username}'") + )