Beispiel #1
0
def login_controller(request):
    log_request(request)
    if request.method == 'POST':
        uname = request.POST.get('uname', None)
        password = request.POST.get('password', None)
        if 'register' in request.POST:
            operation = 'register'
        elif 'login' in request.POST:
            operation = 'login'
        else:
            return HttpResponseBadRequest('400 Malformed request')
        log.debug('request to {}, uname = {} password = {}'.format(
            operation, uname, password))
        if operation == 'login':
            user = authenticate(uname, password)
        elif operation == 'register':
            user = register_user(uname, password)
        else:
            return HttpResponseBadRequest("400 Malformed request.")
        if user:
            # logged in OK, let's handle oauth case
            oauth = oauth_params_auth(request)
            if oauth and oauth['response_type'] == 'code':
                grant = issue_grantcode(user)
                redirect_uri = oauth['redirect_uri']
                redirect_uri += '?code=' + grant.code
                response = HttpResponseRedirect(redirect_uri)
            else:
                response = HttpResponseRedirect(reverse('users'))
                response.set_cookie('uname', uname)
                response.set_cookie('password', password)
                if operation == 'register':
                    response.status = 201
            log.debug('response:\n' + str(response.serialize()))
            return response
        else:
            return HttpResponse('401 Unauthorized', status=401)
    else:
        return HttpResponseBadRequest('400 Malformed request.')