コード例 #1
0
def save_users(users, args, parser):
    properties = defaultdict(dict)
    if users:
        print('Users:')
    for username, data in six.iteritems(users):
        username = username.lower()

        try:
            backend.create_user(user=username)
            created = True
        except UserExists:
            created = False

        if not created and args.skip_existing_users:
            continue

        # handle password:
        if 'password' in data and (created or args.overwrite_passwords):
            pwd = data['password']
            if isinstance(pwd, six.string_types):
                backend.set_password(user=username, password=pwd)
                print('* %s: Set password from input data.' % username)
            elif isinstance(pwd, dict):
                try:
                    backend.set_password_hash(user=username, **pwd)
                    print('* %s: Set hash from input data.' % username)
                except ValueError:
                    print('* %s: Hash of type "%s" is not supported, skipping.' %
                          (username, pwd['algorithm']))
            else:
                raise TypeError("password is of type %s." % type(pwd).__name__)
        elif created and args.gen_passwords:
            raw_passwd = Service.objects.make_random_password(length=16)
            backend.set_password(user=username, password=raw_passwd)
            print('* %s: Generated password: %s' % (username, raw_passwd))

        # handle all other preferences
        for key, value in six.iteritems(data.get('properties', {})):
            if key in TIMESTAMP_PROPS:
                if isinstance(value, (int, float)):
                    value = datetime.fromtimestamp(value)
                else:  # parse time, to ensure correct format
                    value = datetime.strptime(value, TIMESTAMP_FORMAT)
                value = datetime.strftime(value, TIMESTAMP_FORMAT)

            properties[username][key] = value
    return properties
コード例 #2
0
ファイル: views.py プロジェクト: asd1355215911/server
    def put(self, request, largs, name):
        """Change a users password."""

        if not request.user.has_perm('Users.user_change_password'):
            return HttpResponseForbidden()

        # If BadRequest: 400 Bad Request
        password = self._parse_put(request)
        if password:
            if len(password) < settings.MIN_PASSWORD_LENGTH:
                raise PasswordInvalid("Password too short")
        else:
            password = None

        # If UserNotFound: 404 Not Found
        backend.set_password(user=name, password=password)
        return HttpResponseNoContent()
コード例 #3
0
ファイル: models.py プロジェクト: kjde/django-xmpp-account
 def set_password(self, raw_password):
     if raw_password is None:
         self.set_unusable_password()
     else:
         backend.set_password(self.username, self.domain, raw_password)
コード例 #4
0
ファイル: restauth-user.py プロジェクト: RestAuth/server
def main(args=None):
    # parse arguments
    args = parser.parse_args(args=args)

    if args.action == 'add':
        password = args.get_password(args)
        if args.password_generated:
            print(args.pwd)

        backend.set_password(user=args.user, password=password)
    elif args.action in ['ls', 'list']:
        for username in sorted(backend.list_users()):
            if six.PY3:  # pragma: py3
                print(username)
            else:   # pragma: py2
                print(username.encode('utf-8'))
    elif args.action == 'verify':
        if not args.pwd:  # pragma: no cover
            args.pwd = getpass.getpass('password: '******'Ok.')
        else:
            print('Failed.')
            sys.exit(1)
    elif args.action == 'set-password':
        password = args.get_password(args)
        if args.password_generated:
            print(args.pwd)

        backend.set_password(user=args.user, password=args.pwd)
    elif args.action == 'view':
        props = backend.get_properties(user=args.user)

        if 'date joined' in props:
            print('Joined: %s' % props['date joined'])

        if 'last login' in props:
            print('Last login: %s' % props['last login'])

        if args.service:
            groups = backend.list_groups(service=args.service, user=args.user)
            if groups:
                print('Groups: %s' % ', '.join(sorted(groups)))
            else:
                print('No groups.')
        else:
            if backend.SUPPORTS_GROUP_VISIBILITY:
                groups = {}
                none_groups = backend.list_groups(service=None, user=args.user)

                for service in Service.objects.all():
                    subgroups = backend.list_groups(service=service, user=args.user)
                    if subgroups:
                        groups[service.username] = subgroups

                if groups or none_groups:
                    print('Groups:')
                    if none_groups:
                        print('* no service: %s' % ', '.join(sorted(none_groups)))

                    for service, groups in sorted(groups.items(), key=lambda t: t[0]):
                        print('* %s: %s' % (service, ', '.join(sorted(groups))))
                else:
                    print('No groups.')
            else:
                groups = backend.list_groups(service=None, user=args.user)
                if groups:
                    print('Groups: %s' % ', '.join(sorted(groups)))
                else:
                    print('No groups.')
    elif args.action == 'rename':
        try:
            backend.rename_user(user=args.user, name=args.name)
        except UserNotFound as e:
            parser.error("%s: %s" % (args.name, e))
        except UserExists as e:
            parser.error("%s: %s" % (args.name, e))
    elif args.action in ['delete', 'rm', 'remove']:  # pragma: no branch
        backend.remove_user(user=args.user)
コード例 #5
0
 def handle_key(self, key, form):
     backend.set_password(username=key.user.username,
                          domain=key.user.domain,
                          password=form.cleaned_data['password'])
     key.user.confirmed = now()
     key.user.save()