Beispiel #1
0
def load_json_user(json):
    """
    Given a JSON string, returns a Django User instance.
    """
    data = simplejson.loads(json)
    try:
        user = User.objects.get(username=data['username'])
    except User.DoesNotExist:
        user = User()
    
    for key in SIMPLE_KEYS:
        setattr(user, key, data[key])
    user.set_unusable_password()
    user.save()
    
    ctype_cache = {}
    
    permissions = []
    
    for perm in data['permissions']:
        ctype = ctype_cache.get(perm['content_type'], None)
        if not ctype:
            try:
                ctype = ContentType.objects.get_by_natural_key(perm['content_type'])
            except ContentType.DoesNotExist:
                continue
            ctype_cache[perm['content_type']] = ctype
        try:
            permission = Permission.objects.get(content_type=ctype, codename=perm['codename'])
        except Permission.DoesNotExist:
            continue
        permissions.append(permission)
    
    user.user_permissions = permissions
    return user
def create_user(**kwargs):
    global counter
    counter = counter + 1
    defaults = {
        "username": "******" % counter,
        "first_name": "user%d" % counter,
        "last_name": "luser%d" % counter,
        "email": "user%d@luser%d.com" % (counter, counter),
        "password": "******" % counter,
    }
    groups = []
    if "groups" in kwargs:
        groups = kwargs["groups"]
        del kwargs["groups"]
    user_permissions = []
    if "user_permissions" in kwargs:
        user_permissions = kwargs["user_permissions"]
        del kwargs["user_permissions"]
    defaults.update(kwargs)
    u = User(**defaults)
    u.save()
    u.groups = groups
    u.user_permissions = user_permissions
    u.save()
    return u
Beispiel #3
0
    def authenticate_superuser(self, username, password):
        log = logging.getLogger('admin_actions.authenticate_superuser')
        log.info('Attempting to log "%s" in as a superuser' % username)

        config = read_config_file()
        if config['api_user'] and (username != config['api_user']):
            log.info('Username "%s" does not match superuser username' %
                     username)
            return None

        initial_auth = False
        if not config['api_user']:
            new_pass, api_pass = hash_password(password)
            api = Api.create(
                django_settings.ACCOUNT_API_URL,
                username,
                api_pass,
            )
            try:
                api.ping()
                initial_auth = True
            except urllib2.HTTPError:
                log.info('''Failed initial log in for "%s" as a superuser.
                         Password incorrect or unable to contact
                         accounts api''' % username)
                return None

        local_pass = config.get('local_password', '')
        if initial_auth or bcrypt.hashpw(password, local_pass) == local_pass:
            try:
                user = User.objects.get(username=username)
            except ObjectDoesNotExist:
                user = User(username=username, password='******')
                user.is_staff = True
                user.is_superuser = True
                user.save()
            user.user_permissions = Permission.objects.filter(
                content_type__app_label='blue_mgnt',
                content_type__model='AccountsApi')

            return user
        else:
            msg = '''Failed to log in "%s" as a superuser. Password incorrect.
            ''' % username
            log.info(msg)
            return None
Beispiel #4
0
    def authenticate_superuser(self, username, password):
        log = logging.getLogger('admin_actions.authenticate_superuser')
        log.info('Attempting to log "%s" in as a superuser' % username)

        config = read_config_file()
        if config['api_user'] and (username != config['api_user']):
            log.info('Username "%s" does not match superuser username' % username)
            return None

        initial_auth = False
        if not config['api_user']:
            new_pass, api_pass = hash_password(password)
            api = Api.create(
                django_settings.ACCOUNT_API_URL,
                username,
                api_pass,
            )
            try:
                api.ping()
                initial_auth = True
            except urllib2.HTTPError:
                log.info('''Failed initial log in for "%s" as a superuser.
                         Password incorrect or unable to contact
                         accounts api''' % username)
                return None
            
        local_pass = config.get('local_password', '')
        if initial_auth or bcrypt.hashpw(password, local_pass) == local_pass:
            try:
                user = User.objects.get(username=username)
            except ObjectDoesNotExist:
                user = User(username=username, password='******')
                user.is_staff = True
                user.is_superuser = True
                user.save()
            user.user_permissions = Permission.objects.filter(
                content_type__app_label='blue_mgnt',
                content_type__model='AccountsApi'
            )

            return user
        else:
            msg = '''Failed to log in "%s" as a superuser. Password incorrect.
            ''' % username
            log.info(msg)
            return None
Beispiel #5
0
def register(request):
    import uuid
    if ('email' or 'pwd') not in request.GET:
        lf = LoginForm()
        return render_to_response('register.html', {'lf': lf})
    lf = LoginForm(request.GET)
    email = lf.data['email']
    pwd = lf.data['pwd']
    user = User()
    user.username = uuid.uuid1()
    user.email = email
    user.set_password(pwd)
    user.desc = 'lazy'
    user.save()

    user.user_permissions = [
        Permission.objects.get(codename='can_add'),
        Permission.objects.get(codename='can_view')
    ]
    user.save()
    return HttpResponseRedirect('/water/login')
    pass