Example #1
0
def log(request):
    # a = request.scheme
    # print(a)
    # logger = logging.getLogger('app-debug')
    # logger.debug(a)
    # return HttpResponse('123')
    user = User.objects.filter(id__exact=3).first()
    contrib_login(request, user)
    return redirect('/admin/')
Example #2
0
def login(request):
    if request.method == "POST":
        form = LoginForm(
            data=request.POST
        )  # TODO: the fact that the POST data is being passed as a kwarg here seems wrong. But if I don't, nothing works...
        if form.is_valid():
            user = authenticate(username=form.cleaned_data["username"], password=form.cleaned_data["password"])
            contrib_login(request, user)
            redirect = request.GET.get("next", None)
            if not redirect:
                redirect = reverse("index")
            return HttpResponseRedirect(redirect)
    else:
        form = LoginForm()

    return render_to_response("accounts/login.html", {"form": form}, context_instance=RequestContext(request))
Example #3
0
def callback(request):
    server_client_id = settings.SERVER_CLIENT_ID
    server_client_secret = settings.SERVER_CLIENT_SECRET
    # host = request.scheme + '://0.0.0.0:8000'  # FOR LOCAL DEBUG
    host = request.scheme + '://' + request.META['HTTP_HOST']
    redirect_uri = host + '/auth/callback'

    token_data = _get_oauth_token(request.GET['code'], server_client_id, server_client_secret, redirect_uri)

    if not 'id_token' in token_data.keys() or not _valid_id_token(token_data['id_token'], server_client_id, server_client_secret):
        return HttpResponse('认证失败,请联系系统管理员!', status=500)

    ret_data = _get_user_info(token_data['access_token'])

    fullname = ret_data['fullname']
    nickname = ret_data['nickname']
    email = ret_data['email']

    user = _get_or_create_user(fullname, nickname, email)
    contrib_login(request, user)
    return redirect(request.session.get('next', '/admin/'))
Example #4
0
def login_operator(request, username=None):

    redirect_to = request.GET.get(REDIRECT_FIELD_NAME,
                                  reverse(settings.LOGIN_REDIRECT_URL))
    form = CreateUserForm(request.POST or None)

    if username:

        user = get_object_or_404(User, username=username)

        if user.is_superuser:

            messages.error(
                request, "Il faut un mot de passe pour se connecter "
                "avec cet utilisateur ;-)")
            return redirect('login')

        user.backend = 'django.contrib.auth.backends.ModelBackend'
        contrib_login(request, user)

        return redirect(redirect_to)

    elif request.method == 'POST' and form.is_valid():

        username = form.cleaned_data['username']
        assert (not User.objects.filter(username=username).exists())

        user = User.objects.create_user(username)
        user.backend = 'django.contrib.auth.backends.ModelBackend'
        contrib_login(request, user)

        return redirect(redirect_to)

    c = {
        'form': form,
        'operators': User.objects.filter(is_superuser=False, is_active=True),
        'next': request.GET.get(REDIRECT_FIELD_NAME, ''),
    }

    return render(request, 'accounts/login_operator.html', c)
def login_operator(request, username=None):

    redirect_to = request.GET.get(REDIRECT_FIELD_NAME,
            reverse(settings.LOGIN_REDIRECT_URL))
    form = CreateUserForm(request.POST or None)

    if username:

        user = get_object_or_404(User, username=username)

        if user.is_superuser:

            messages.error(request, "Il faut un mot de passe pour se connecter "
                                    "avec cet utilisateur ;-)")
            return redirect('login')

        user.backend = 'django.contrib.auth.backends.ModelBackend'
        contrib_login(request, user)

        return redirect(redirect_to)

    elif request.method == 'POST' and form.is_valid():

        username = form.cleaned_data['username']
        assert(not User.objects.filter(username=username).exists())

        user = User.objects.create_user(username)
        user.backend = 'django.contrib.auth.backends.ModelBackend'
        contrib_login(request, user)

        return redirect(redirect_to)

    c = {
        'form': form,
        'operators': User.objects.filter(is_superuser=False, is_active=True),
        'next': request.GET.get(REDIRECT_FIELD_NAME, ''),
    }

    return render(request, 'accounts/login_operator.html', c)
Example #6
0
def index(request):
    initial_room = Room.objects.get(pk=getattr(config, 'INITIAL_ROOM', 1))
    if not request.user.is_authenticated():
        """
        To promote new users, the site automatically creates a throwaway
        user for each unauthenticated visitor. If they've had a good time
        they can change the name and set the password to make it a
        permanent user
        """

        user = User()
        user.save()
        user.username = u"user_%s" % user.id
        temp = hashlib.new('sha1')
        temp.update(str(datetime.datetime.now()))
        password = temp.hexdigest()
        user.set_password(password)
        user.save()
        authenticated_user = authenticate(username=user.username,
                                          password=password)
        contrib_login(request, authenticated_user)

        player = Player.objects.create(user=user,
                                       name=user.username,
                                       temporary=True,
                                       status='logged_in',
                                       room=initial_room)
        player.hp = player.max_hp
        player.save()
        player.update_level()
        set_default_aliases(player)
        
    else: # returning user
        characters = Player.objects.filter(user=request.user)
        if characters.count() == 0: # no characters, create one
            # new player
            
            # if the user is staff, give the character builder mode
            if request.user.is_staff:
                builder_mode = True
            else:
                builder_mode = False
                
            # if the user's name is already a character name, give a temp name
            character_name = request.user.username
            if characters.filter(name=character_name):
                name = "user_%s" % request.user.id
                
            player = Player.objects.create(user=request.user,
                                           name=character_name,
                                           status='logged_in',
                                           builder_mode=builder_mode,
                                           room=initial_room)
            player.hp = player.max_hp
            player.save()
            player.update_level()
            set_default_aliases(player)
        elif characters.filter(status='logged_in').count() == 1:
            player = characters.get(status='logged_in')
        else:
            characters.update(status='logged_out')
            return HttpResponseRedirect(reverse('accounts_index'))

    return render_to_response("game/index.html", {
        'player': player,
        'temporary_user': player.temporary,
        }, context_instance=RequestContext(request))