예제 #1
0
파일: views.py 프로젝트: jackerzz/spug
    def post(self, request):
        form, error = JsonParser(
            Argument('id', type=int, required=False),
            Argument('username', help='请输入登录名'),
            Argument('password', help='请输入密码'),
            Argument('nickname', help='请输入姓名'),
            Argument('role_ids', type=list, default=[]),
            Argument('wx_token', required=False),
        ).parse(request.body)
        if error is None:
            user = User.objects.filter(username=form.username,
                                       deleted_by_id__isnull=True).first()
            if user and (not form.id or form.id != user.id):
                return json_response(error=f'已存在登录名为【{form.username}】的用户')

            role_ids, password = form.pop('role_ids'), form.pop('password')
            if form.id:
                user = User.objects.get(pk=form.id)
                user.update_by_dict(form)
            else:
                user = User.objects.create(
                    password_hash=User.make_password(password),
                    created_by=request.user,
                    **form)
            user.roles.set(role_ids)
            user.set_perms_cache()
        return json_response(error=error)
예제 #2
0
파일: views.py 프로젝트: jackerzz/spug
 def patch(self, request):
     form, error = JsonParser(
         Argument('old_password', required=False),
         Argument('new_password', required=False),
         Argument('nickname', required=False, help='请输入昵称'),
         Argument('wx_token', required=False),
     ).parse(request.body)
     if error is None:
         print(form)
         if form.old_password and form.new_password:
             if request.user.type == 'ldap':
                 return json_response(error='LDAP账户无法修改密码')
             if len(form.new_password) < 6:
                 return json_response(error='请设置至少6位的新密码')
             if request.user.verify_password(form.old_password):
                 request.user.password_hash = User.make_password(
                     form.new_password)
                 request.user.token_expired = 0
                 request.user.save()
                 return json_response()
             else:
                 return json_response(error='原密码错误,请重新输入')
         if form.nickname is not None:
             request.user.nickname = form.nickname
         if form.wx_token is not None:
             request.user.wx_token = form.wx_token
         request.user.save()
     return json_response(error=error)
예제 #3
0
 def handle(self, *args, **options):
     User.objects.create(
         username=options['u'],
         nickname=options['n'],
         password_hash=User.make_password(options['p']),
         is_supper=options['s'],
     )
     self.stdout.write(self.style.SUCCESS('创建成功'))
예제 #4
0
 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()
         cache.delete(user.username)
         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()
예제 #5
0
파일: views.py 프로젝트: zzti/spug
 def post(self, request):
     form, error = JsonParser(
         Argument('username', help='请输入登录名'),
         Argument('password', help='请输入密码'),
         Argument('nickname', help='请输入姓名'),
         Argument('role_id', type=int, help='请选择角色'),
     ).parse(request.body)
     if error is None:
         form.password_hash = User.make_password(form.pop('password'))
         form.created_by = request.user
         User.objects.create(**form)
     return json_response(error=error)
예제 #6
0
 def post(self, request):
     form, error = JsonParser(
         Argument('username', help='请输入登录名'),
         Argument('password', help='请输入密码'),
         Argument('nickname', help='请输入姓名'),
         Argument('role_id', type=int, help='请选择角色'),
     ).parse(request.body)
     if error is None:
         if User.objects.filter(username=form.username, deleted_by_id__isnull=True).exists():
             return json_response(error=f'已存在登录名为【{form.username}】的用户')
         form.password_hash = User.make_password(form.pop('password'))
         form.created_by = request.user
         User.objects.create(**form)
     return json_response(error=error)
예제 #7
0
파일: views.py 프로젝트: zhbjerry/spug
 def patch(self, request):
     form, error = JsonParser(
         Argument('id', type=int, help='请指定操作对象'),
         Argument('username', required=False),
         Argument('password', required=False),
         Argument('nickname', required=False),
         Argument('role_id', required=False),
         Argument('is_active', type=bool, required=False),
     ).parse(request.body, True)
     if error is None:
         if form.get('password'):
             form.token_expired = 0
             form.password_hash = User.make_password(form.pop('password'))
         User.objects.filter(pk=form.pop('id')).update(**form)
     return json_response(error=error)
예제 #8
0
 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'],
         password_hash=User.make_password(options['p']),
         is_supper=options['s'],
     )
     self.stdout.write(self.style.SUCCESS('创建成功'))
     self.stdout.write(
         self.style.WARNING(
             '废弃警告,v3.0.0之后将会移除该命令,请使用 python manage.py user add 来代替!'))
예제 #9
0
파일: views.py 프로젝트: jackerzz/spug
 def patch(self, request):
     form, error = JsonParser(
         Argument('id', type=int, help='参数错误'),
         Argument('password', required=False),
         Argument('is_active', type=bool, required=False),
     ).parse(request.body)
     if error is None:
         user = User.objects.get(pk=form.id)
         if form.password:
             user.token_expired = 0
             user.password_hash = User.make_password(form.pop('password'))
         if form.is_active is not None:
             user.is_active = form.is_active
             cache.delete(user.username)
         user.save()
     return json_response(error=error)
예제 #10
0
 def patch(self, request):
     form, error = JsonParser(
         Argument('id', type=int, help='请指定操作对象'),
         Argument('username', required=False),
         Argument('password', required=False),
         Argument('nickname', required=False),
         Argument('role_id', required=False),
         Argument('is_active', type=bool, required=False),
     ).parse(request.body, True)
     if error is None:
         if form.get('password'):
             form.token_expired = 0
             form.password_hash = User.make_password(form.pop('password'))
         if User.objects.filter(
                 username=form.username,
                 deleted_by_id__isnull=True).exclude(id=form.id).exists():
             return json_response(error=f'已存在登录名为【{form.username}】的用户')
         User.objects.filter(pk=form.pop('id')).update(**form)
     return json_response(error=error)
예제 #11
0
파일: views.py 프로젝트: zhbjerry/spug
 def patch(self, request):
     form, error = JsonParser(
         Argument('old_password', required=False),
         Argument('new_password', required=False),
         Argument('nickname', required=False),
     ).parse(request.body, True)
     if error is None:
         if form.get('old_password') and form.get('new_password'):
             if len(form.new_password) < 6:
                 return json_response(error='请设置至少6位的新密码')
             if request.user.verify_password(form.old_password):
                 request.user.password_hash = User.make_password(
                     form.new_password)
                 request.user.token_expired = 0
                 request.user.save()
             else:
                 return json_response(error='原密码错误,请重新输入')
         if form.get('nickname'):
             request.user.nickname = form.nickname
             request.user.save()
     return json_response(error=error)