mirror of https://github.com/openspug/spug
A 添加manage.py user命令实现创建/启用/重置账户功能
parent
b7c33ea803
commit
a63a8191b0
|
@ -0,0 +1,71 @@
|
|||
# Copyright: (c) OpenSpug Organization. https://github.com/openspug/spug
|
||||
# Copyright: (c) <spug.dev@gmail.com>
|
||||
# Released under the MIT License.
|
||||
from django.core.management.base import BaseCommand
|
||||
from apps.account.models import User
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = '账户管理'
|
||||
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument('action', type=str, help='执行动作')
|
||||
parser.add_argument('-u', required=False, help='账户名称')
|
||||
parser.add_argument('-p', required=False, help='账户密码')
|
||||
parser.add_argument('-n', required=False, help='账户昵称')
|
||||
parser.add_argument('-s', default=False, help='是否是超级用户(默认否)')
|
||||
|
||||
def echo_success(self, msg):
|
||||
self.stdout.write(self.style.SUCCESS(msg))
|
||||
|
||||
def echo_error(self, msg):
|
||||
self.stderr.write(self.style.ERROR(msg))
|
||||
|
||||
def print_help(self, *args):
|
||||
message = '''
|
||||
账户管理命令用法:
|
||||
user add 创建账户,例如:user add -u admin -p 123 -n 管理员 -s
|
||||
user reset 重置账户密码,例如:user reset -u admin -p 123
|
||||
user enable 启用被禁用的账户,例如:user enable -u admin
|
||||
'''
|
||||
self.stdout.write(message)
|
||||
|
||||
def handle(self, *args, **options):
|
||||
action = options['action']
|
||||
if action == 'add':
|
||||
if not all((options['u'], options['p'], options['n'])):
|
||||
self.echo_error('缺少参数')
|
||||
self.print_help()
|
||||
elif User.objects.filter(username=options['u'], deleted_by_id__isnull=True).exists():
|
||||
self.echo_error(f'已存在登录名为【{options["u"]}】的用户')
|
||||
else:
|
||||
User.objects.create(
|
||||
username=options['u'],
|
||||
nickname=options['n'],
|
||||
password_hash=User.make_password(options['p']),
|
||||
is_supper=options['s'],
|
||||
)
|
||||
self.echo_success('创建用户成功')
|
||||
elif action == 'enable':
|
||||
if not options['u']:
|
||||
self.echo_error('缺少参数')
|
||||
self.print_help()
|
||||
user = User.objects.filter(username=options['u'], deleted_by_id__isnull=True).first()
|
||||
if not user:
|
||||
return self.echo_error(f'未找到登录名为【{options["u"]}】的账户')
|
||||
user.is_active = True
|
||||
user.save()
|
||||
self.echo_success('账户已启用')
|
||||
elif action == 'reset':
|
||||
if not all((options['u'], options['p'])):
|
||||
self.echo_error('缺少参数')
|
||||
self.print_help()
|
||||
user = User.objects.filter(username=options['u'], deleted_by_id__isnull=True).first()
|
||||
if not user:
|
||||
return self.echo_error(f'未找到登录名为【{options["u"]}】的账户')
|
||||
user.password_hash = User.make_password(options['p'])
|
||||
user.save()
|
||||
self.echo_success('账户密码已重置')
|
||||
else:
|
||||
self.echo_error('未识别的操作')
|
||||
self.print_help()
|
|
@ -15,6 +15,8 @@ class Command(BaseCommand):
|
|||
parser.add_argument('-s', default=False, action='store_true', help='是否是超级用户(默认否)')
|
||||
|
||||
def handle(self, *args, **options):
|
||||
if User.objects.filter(username=options['u'], deleted_by_id__isnull=True).exists():
|
||||
return self.stderr.write(self.style.ERROR(f'已存在登录名为【{options["u"]}】的用户'))
|
||||
User.objects.create(
|
||||
username=options['u'],
|
||||
nickname=options['n'],
|
||||
|
@ -22,3 +24,4 @@ class Command(BaseCommand):
|
|||
is_supper=options['s'],
|
||||
)
|
||||
self.stdout.write(self.style.SUCCESS('创建成功'))
|
||||
self.stdout.write(self.style.WARNING('废弃警告,v2.3.0之后将会移除该命令,请使用 python manage.py user add 来代替!'))
|
||||
|
|
Loading…
Reference in New Issue