예제 #1
0
 def authenticate(self, username, password):
     try:
         user = User.objects.get(jid=username)
         if backend.check_password(user.username, user.domain, password):
             return user
     except User.DoesNotExist:
         pass
예제 #2
0
    def handle_key(self, key, form):
        username = key.user.username
        domain = key.user.domain
        password = form.cleaned_data['password']

        if not backend.check_password(username=username, domain=domain, password=password):
            raise UserNotFound()
 def authenticate(self, username, password):
     try:
         user = User.objects.get(email=username)
         if backend.check_password(user.username, user.domain, password):
             return user
     except User.DoesNotExist:
         pass
예제 #4
0
파일: tests.py 프로젝트: RestAuth/server
 def test_gen_passwords(self):
     path = os.path.join(self.base, 'users3.json')
     with capture() as (stdout, stderr):
         restauth_import(['--gen-passwords', path])
         output = stdout.getvalue()
         self.assertHasLine(output, r'^\* %s: Generated password: .*' % username1)
         password = re.search('Generated password: (.*)', output).groups()[0]
     self.assertTrue(backend.check_password(user=username1, password=password))
예제 #5
0
    def handle_key(self, key, form):
        username = key.user.username
        domain = key.user.domain
        password = form.cleaned_data['password']

        if not backend.check_password(
                username=username, domain=domain, password=password):
            raise UserNotFound()
예제 #6
0
파일: tests.py 프로젝트: RestAuth/server
    def test_users_django_hash(self, overwrite=False):
        path = os.path.join(self.base, 'users5.json')
        with capture() as (stdout, stderr):
            cmd = [path]
            if overwrite:
                cmd = ['--overwrite-properties', path]

            with override_settings(PASSWORD_HASHERS=PASSWORD_HASHERS):
                restauth_import(cmd)
                self.assertHasLine(stdout, r'^\* %s: Set hash from input data\.$' % username3)
                self.assertTrue(backend.check_password(user=username3, password='******'))
                self.assertCountEqual(backend.list_users(), [username3])
예제 #7
0
    def get_user(self, data):
        username = data['username']
        domain = data['domain']

        try:
            user = User.objects.has_email().get_user(username, domain)
        except User.DoesNotExist:
            raise UserNotFound()

        if not backend.check_password(username=username, domain=domain, password=data['password']):
           raise UserNotFound()

        return user
예제 #8
0
    def get_user(self, data):
        username = data['username']
        domain = data['domain']

        try:
            user = User.objects.has_email().get_user(username, domain)
        except User.DoesNotExist:
            raise UserNotFound()

        if not backend.check_password(
                username=username, domain=domain, password=data['password']):
            raise UserNotFound()

        return user
예제 #9
0
    def post(self, request, largs, name):
        """Verify a users password."""

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

        # If BadRequest: 400 Bad Request
        password, groups = self._parse_post(request)
        if groups is not None:
            groups = [(group, request.user) for group in groups]

        if backend.check_password(user=name, password=password, groups=groups):
            return HttpResponseNoContent()
        else:
            raise UserNotFound(name)
예제 #10
0
    def handle_key(self, key, form):
        if not backend.check_password(username=key.user.username,
                                      domain=key.user.domain,
                                      password=form.cleaned_data['password']):
            raise UserNotFound()

        data = json.loads(key.payload)
        key.user.gpg_fingerprint = data.get('gpg_fingerprint')
        key.user.confirmed = now()

        if 'email' in data:  # set email from payload (might not be present in old keys)
            key.user.email = data['email']

        key.user.save()
        backend.set_email(username=key.user.username,
                          domain=key.user.domain,
                          email=key.user.email)
예제 #11
0
    def get_user(self, data):
        """User may or may not exist."""
        username = data['username']
        domain = data['domain']
        jid = '%s@%s' % (data['username'], data['domain'])
        password = data['password']

        if not backend.check_password(
                username=username, domain=domain, password=password):
            raise UserNotFound()

        # Defaults are only used for *new* User objects. If they aren't in the database already,
        # it means they registered through InBand-Registration.
        defaults = {
            'email': data['email'],
            'registration_method': REGISTRATION_INBAND,
        }

        user, created = User.objects.get_or_create(jid=jid, defaults=defaults)
        return user
예제 #12
0
파일: tests.py 프로젝트: RestAuth/server
    def test_users(self, overwrite=False):
        path = os.path.join(self.base, 'users1.json')
        cmd = [path]
        if overwrite:
            cmd = ['--overwrite-properties', path]

        with capture() as (stdout, stderr):

            with override_settings(PASSWORD_HASHERS=PASSWORD_HASHERS):
                restauth_import(cmd)
                self.assertHasLine(stdout, r'^\* %s: Set hash from input data\.$' % username3)
                self.assertTrue(backend.check_password(user=username3, password='******'))

            self.assertCountEqual(backend.list_users(), [username1, username2, username3])
            props = {
                propkey1: propval1,
                propkey2: propval2,
                # timestamps of when we wrote this test:
                # u'date joined': u'2013-12-01 19:27:50',
                u'last login': u'2013-12-01 19:27:44',
            }

            self.assertProperties(username2, props)
예제 #13
0
 def check_password(self, raw_password):
     return backend.check_password(self.username, self.domain, raw_password)
예제 #14
0
 def assertFalsePassword(self, username, password):
     self.assertFalse(backend.check_password(user=username, password=password))
예제 #15
0
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)