示例#1
0
def new_gmail_account():
    logger = get_logger()
  
    authcode = request.values.get('authcode')
    redirecturi = request.values.get('redirecturi')
    reauth = True
    auth_handler = GmailAuthHandler(provider_name='gmail')
    auth_handler.OAUTH_REDIRECT_URI = redirecturi

    auth_info = auth_handler._get_authenticated_user(authcode)
    auth_info['contacts'] = True
    auth_info['events'] = True
    auth_info['provider'] = 'gmail'

    email_address = auth_info['email']
    account_exists = False

    # Check for email in allowed emails list
    emails_filter_enabled = config.get('EMAILS_FILTER_ENABLED')
    allowed_emails = config.get('ALLOWED_EMAILS')
    if emails_filter_enabled and allowed_emails and email_address not in allowed_emails:
        return jsonify({"code": "email_not_allowed", "message": "Email not allowed", "profile": auth_info})

    with session_scope(0) as db_session:
        account = db_session.query(Account).filter_by(email_address=email_address).first()
        if account is not None and not reauth:
            api_id = account.namespace.public_id
            return jsonify({"code": "account_exist", "message": "Account already exist", "api_id": api_id})
        elif account is not None and reauth:
            account_exists = True
            account = auth_handler.update_account(account, auth_info)
        else:
            account = auth_handler.create_account(email_address, auth_info)
    
        try:
            if auth_handler.verify_account(account):
                db_session.add(account)
                db_session.commit()
        except NotSupportedError as e:
            return default_json_error(e)

        api_id = account.namespace.public_id

    if account_exists:
        return jsonify({"code": "account_updated", "message": "Account already exist and Updated", "api_id": api_id})

    return jsonify({"code": "account_created", "message": "new account created", "api_id": api_id})
示例#2
0
def login_gmail_account():
    authcode = request.values.get('authcode')
    redirecturi = request.values.get('redirecturi')
    auth_handler = GmailAuthHandler(provider_name='gmail')
    auth_handler.OAUTH_REDIRECT_URI = redirecturi

    auth_info = auth_handler._get_authenticated_user(authcode)

    email_address = auth_info['email']

    with session_scope(0) as db_session:
        account = db_session.query(Account).filter_by(email_address=email_address).first()
        if account is None:
            return default_json_error('The account does not exist!')

        api_id = account.namespace.public_id
        return jsonify({"message": "Login successful", "api_id": api_id})