Ejemplo n.º 1
0
def login_complete_view(request):
    context = request.context
    session = DBSession()
    #url = "https://api.github.com/user?access_token=%s"
    result = {
        'provider_type': context.provider_type,
        'provider_name': context.provider_name,
        'profile': context.profile,
        'credentials': context.credentials,
    }
    token = context.credentials['oauthAccessToken']
    provider = context.profile.get('accounts')[0]
    identifier = sha1(str(provider.get('userid')) + _SALT).hexdigest()
    emails = [item['value'] for item in context.profile.get('emails',[])]
    if emails:
        email = emails[0]
    else:
        email = None
    logger.warn(result)
    #r = requests.get(url%token)
    #create user
    user = User.query.filter_by(identifier=identifier).first()
    if user:
        #update token
        user.auth_token = token
        user.provider = context.provider_name
    else:
        user = User(
            auth_token=token,
            provider=context.provider_name,
            identifier=identifier
        )
        if context.profile['displayName'] is None or context.profile['displayName'].strip() == '':
            display_name = context.profile['preferredUsername']
        else:
            display_name = context.profile['displayName']
        profile = Profile(
            email=email,
            user=user,
            name=display_name
        )
        if context.provider_name == 'github':
            profile.github_name = context.profile['preferredUsername']
        session.add(profile)
    #create profile if needed
    session.add(user)
    session.flush()
    #login user
    headers = remember(request, user.id)
    request.session.flash(u'Logged in successfully.')
    return HTTPFound(location=request.route_url('home'), headers=headers)
Ejemplo n.º 2
0
def home(request):
    session = DBSession()
    people = session.query(func.count(Profile.id)).scalar()
    companies = session.query(func.count(Company.id)).scalar()
    groups = session.query(func.count(Group.id)).scalar()
    return {'people': people, 'companies': companies, 'groups': groups}