示例#1
0
文件: views.py 项目: Shavakan/otlplus
def login_callback(request):
    if request.method == "GET":
        next = request.session.pop('next', '/')
        tokenid = request.GET.get('tokenid', '')

        sso_profile = sso_client.get_user_info(tokenid)
        username = sso_profile['first_name'] + sso_profile['last_name'] 

        user_list = User.objects.filter(username=username)
        try:
            kaist_info = json.loads(sso_profile['kaist_info'])
            student_id = kaist_info.get('ku_std_no')
        except:
            student_id = ''
        if len(user_list) == 0:
            user = User.objects.create_user(username=username,
                        email=sso_profile['email'],
                        password=str(random.getrandbits(32)),
                        first_name=sso_profile['first_name'],
                        last_name=sso_profile['last_name'])
            user.save()
            user_profile = UserProfile(user=user, student_id=student_id)
            user_profile.sid = sso_profile['sid']
            user_profile.save()
            user = authenticate(username=username)
            login(request, user)
            return redirect(next)
        else:
           user = authenticate(username=user_list[0].username)
           user_profile = UserProfile.objects.get(user=user)
           user_profile.student_id = student_id
           login(request, user)
           return redirect(next)
    return render('/session/login.html', {'error': "Invalid login"})
示例#2
0
文件: views.py 项目: juheeuu/otlplus
def login_callback(request):
    next = request.session.pop('next', '/')
    state_before = request.session.get('sso_state', 'default before state')
    state = request.GET.get('state', 'default state')

    if state_before != state:
        return render(request, 'session/login_error.html', {
            'error_title': "Login Error",
            'error_message': "Invalid login"
        })

    code = request.GET.get('code')
    sso_profile = sso_client.get_user_info(code)
    username = sso_profile['sid']

    user_list = User.objects.filter(username=username)
    try:
        kaist_info = json.loads(sso_profile['kaist_info'])
        student_id = kaist_info.get('ku_std_no')
    except:
        student_id = ''

    if student_id is None:
        student_id = ''

    if len(user_list) == 0:
        user = User.objects.create_user(username=username,
                                        email=sso_profile['email'],
                                        password=str(random.getrandbits(32)),
                                        first_name=sso_profile['first_name'],
                                        last_name=sso_profile['last_name'])
        user.save()

        try:
            user_profile = UserProfile.objects.get(
                student_id=sso_profile['sid'])
            user_profile.user = user
        except:
            user_profile = UserProfile(student_id=student_id, user=user)

        user_profile.sid = sso_profile['sid']
        user_profile.save()

        if not settings.DEBUG:
            os.chdir('/var/www/otlplus/')
        os.system('python do_import_user_major.py %s' % student_id)
        os.system('python update_taken_lecture_user.py %s' % student_id)
        OldTimeTable.import_in_for_user(student_id)

        user = authenticate(username=username)
        login(request, user)
        return redirect(next)
    else:
        user = authenticate(username=user_list[0].username)
        user.first_name = sso_profile['first_name']
        user.last_name = sso_profile['last_name']
        user.save()
        user_profile = UserProfile.objects.get(user=user)
        previous_student_id = user_profile.student_id
        user_profile.student_id = student_id
        user_profile.save()
        if previous_student_id != student_id:
            if not settings.DEBUG:
                os.chdir('/var/www/otlplus/')
            os.system('python do_import_user_major.py %s' % student_id)
            os.system('python update_taken_lecture_user.py %s' % student_id)
            OldTimeTable.import_in_for_user(student_id)
        login(request, user)
        return redirect(next)
    return render(request, 'session/login_error.html', {
        'error_title': "Login Error",
        'error_message': "No such that user"
    })
示例#3
0
def login_callback(request):
    next = request.session.pop('next', '/')
    state_before = request.session.get('sso_state', 'default before state')
    state = request.GET.get('state', 'default state')

    if state_before != state:
        return render(request, 'session/login_error.html',
                      {'error_title': "Login Error",
                       'error_message': "Invalid login"})

    code = request.GET.get('code')
    sso_profile = sso_client.get_user_info(code)
    username = sso_profile['sid']

    user_list = User.objects.filter(username=username)
    try:
        kaist_info = json.loads(sso_profile['kaist_info'])
        student_id = kaist_info.get('ku_std_no')
    except:
        student_id = ''

    if len(user_list) == 0:
        user = User.objects.create_user(username=username,
                    email=sso_profile['email'],
                    password=str(random.getrandbits(32)),
                    first_name=sso_profile['first_name'],
                    last_name=sso_profile['last_name'])
        user.save()

        try:
            user_profile = UserProfile.objects.get(student_id=sso_profile['sid'])
            user_profile.user = user
        except:
            user_profile = UserProfile(student_id=student_id, user = user)

        user_profile.sid = sso_profile['sid']
        user_profile.save()

        if not settings.DEBUG:
            os.chdir('/var/www/otlplus/')
        os.system('python update_taken_lecture_user.py %s' % student_id)

        user = authenticate(username=username)
        login(request, user)
        return redirect(next)
    else:
        user = authenticate(username=user_list[0].username)
        user.first_name=sso_profile['first_name']
        user.last_name=sso_profile['last_name']
        user.save()
        user_profile = UserProfile.objects.get(user=user)
        previous_student_id = user_profile.student_id
        user_profile.student_id = student_id
        user_profile.save()
        if previous_student_id != student_id:
            if not settings.DEBUG:
                os.chdir('/var/www/otlplus/')
            os.system('python update_taken_lecture_user.py %s' % student_id)
        login(request, user)
        return redirect(next)
    return render(request, 'session/login_error.html',
                  {'error_title': "Login Error",
                   'error_message': "No such that user"})
示例#4
0
def login_callback(request):
    next = request.session.pop('next', '/')
    state_before = request.session.get('sso_state', 'default before state')
    state = request.GET.get('state', 'default state')

    # if state_before != state:
    #     return render(request, 'session/login_error.html',
    #                   {'error_title': "Login Error",
    #                    'error_message': "Invalid login"})

    code = request.GET.get('code')
    # sso_profile = sso_client.get_user_info(code)
    sso_profile = {
        u'first_name': u'\uc7ac\uc601',
        u'last_name': u'\ud669',
        u'kaist_id': u'',
        u'uid': u'1ff7de1fd6272f8982fb',
        u'gender': u'*M',
        u'facebook_id': u'',
        u'twitter_id': u'',
        u'birthday': u'1997-11-24',
        u'flags': [u'TEST', u'SPARCS'],
        u'sid': u'43760d931fadde80aee2',
        u'kaist_info': u'',
        u'sparcs_id': u'akais',
        u'email': u'*****@*****.**',
        u'kaist_info_time': u''
    }
    username = sso_profile['sid']

    user_list = User.objects.filter(username=username)
    try:
        kaist_info = json.loads(sso_profile['kaist_info'])
        student_id = kaist_info.get('ku_std_no')
    except:
        student_id = ''

    if student_id is None:
        student_id = ''

    if len(user_list) == 0:
        user = User.objects.create_user(username=username,
                                        email=sso_profile['email'],
                                        password=str(random.getrandbits(32)),
                                        first_name=sso_profile['first_name'],
                                        last_name=sso_profile['last_name'])
        user.save()

        try:
            user_profile = UserProfile.objects.get(
                student_id=sso_profile['sid'])
            user_profile.user = user
        except:
            user_profile = UserProfile(student_id=student_id, user=user)

        user_profile.sid = sso_profile['sid']
        user_profile.save()

        if not settings.DEBUG:
            os.chdir('/var/www/otlplus/')
        os.system('python do_import_user_major.py %s' % student_id)
        os.system('python update_taken_lecture_user.py %s' % student_id)
        OldTimeTable.import_in_for_user(student_id)

        user = authenticate(username=username)
        login(request, user)
        return redirect(next)
    else:
        user = authenticate(username=user_list[0].username)
        user.first_name = sso_profile['first_name']
        user.last_name = sso_profile['last_name']
        user.save()
        user_profile = UserProfile.objects.get(user=user)
        previous_student_id = user_profile.student_id
        user_profile.student_id = student_id
        user_profile.save()
        if previous_student_id != student_id:
            if not settings.DEBUG:
                os.chdir('/var/www/otlplus/')
            os.system('python do_import_user_major.py %s' % student_id)
            os.system('python update_taken_lecture_user.py %s' % student_id)
            OldTimeTable.import_in_for_user(student_id)
        login(request, user)
        return redirect(next)
    return render(request, 'session/login_error.html', {
        'error_title': "Login Error",
        'error_message': "No such that user"
    })