Example #1
0
 def setUp(self):
     create_user("1")
     self.args = {
         "user_id": "1",
         "books": [
             {
                 "name": "Book",
                 "author": "Barney",
                 "category": "Romance",
                 "pages": 432,
                 "pages_read": 234,
                 "snippet": "daosdaopskdaopsdksaopsk",
                 "rate": 3.2,
                 "cover_url": "",
                 "notes": [{"text": "rdaopsdkaopsdk"}],
             },
             {
                 "name": "Book",
                 "pages": 432,
                 "author": "Barney",
                 "category": "Romance",
                 "pages_read": 234,
                 "snippet": "daosdaopskdaopsdksaopsk",
                 "rate": 3.2,
                 "cover_url": "",
                 "notes": [{"text": "rdaopsdkaopsdk"}, {"text": "kdoaskdoa"}],
             },
         ],
     }
Example #2
0
 def setUp(self):
     user = create_user("098")
     book = create_book("Clean Code", "Robert", "Computer")
     self.user_book = UserBooks(user, book)
     db.session.add(self.user_book)
     db.session.commit()
     self.args = {"user_id": user.user_id}
Example #3
0
 def setUp(self):
     self.user = create_user("312")
     book = create_book("Clean Code123", "Robert", "Computer")
     user_book = UserBooks(self.user, book)
     db.session.add(user_book)
     db.session.commit()
     self.args = {"user_id": self.user.user_id, "book_name": book.name}
Example #4
0
 def setUp(self):
     book = create_book("Clean Code1", "Roberto", "Computer")
     user = create_user("23123")
     self.user_book = create_user_book(user, book)
     self.args['book_id'] = book.id
     self.args['user_id'] = user.user_id
     self.args['text'] = "Teste"
Example #5
0
 def setUp(self):
     self.user = create_user("312")
     book = create_book("Clean Code123", "Robert", "Computer")
     user_book = UserBooks(self.user, book)
     db.session.add(user_book)
     db.session.commit()
     self.args = {"user_id": self.user.user_id, "book_name": book.name}
Example #6
0
 def setUp(self):
     book = create_book("Clean Code1", "Roberto", "Computer")
     user = create_user("23123")
     self.user_book = create_user_book(user, book)
     self.args["book_id"] = book.id
     self.args["user_id"] = user.user_id
     self.args["text"] = "Teste"
Example #7
0
 def setUp(self):
     user = create_user("098")
     book = create_book("Clean Code", "Robert", "Computer")
     self.user_book = UserBooks(user, book)
     db.session.add(self.user_book)
     db.session.commit()
     self.args = {'user_id': user.user_id}
Example #8
0
 def setUp(self):
     self.user = create_user("87656")
     self.args = {
         "name": "Rafael2",
         "auth_token": "123",
         "auth_token_secret": "3123123",
         "user_id": "87656"
     }
Example #9
0
 def handle_user(self, user):
     self.user = create_user(user)
     apartment_list = get_apartment_list(self.user)
     json_data = convert_to_json(apartment_list)
     #print(self.user.gender)
     for apart in apartment_list:
         print(apart.address)
     #print(apartment_list[0].address)
     return json.dumps(json_data)
Example #10
0
 def handle_user(self,user):
     self.user = create_user(user)
     apartment_list = get_apartment_list(self.user)
     json_data = convert_to_json(apartment_list)
     #print(self.user.gender)
     for apart in apartment_list:
         print(apart.address)
     #print(apartment_list[0].address)
     return json.dumps(json_data)
Example #11
0
 def setUp(self):
     create_user("1")
     self.args = {
         "user_id":
         "1",
         "books": [{
             "name": "Book",
             "author": "Barney",
             "category": "Romance",
             "pages": 432,
             "pages_read": 234,
             "snippet": "daosdaopskdaopsdksaopsk",
             "rate": 3.2,
             "cover_url": "",
             "notes": [{
                 "text": "rdaopsdkaopsdk"
             }]
         }, {
             "name":
             "Book",
             "pages":
             432,
             "author":
             "Barney",
             "category":
             "Romance",
             "pages_read":
             234,
             "snippet":
             "daosdaopskdaopsdksaopsk",
             "rate":
             3.2,
             "cover_url":
             "",
             "notes": [{
                 "text": "rdaopsdkaopsdk"
             }, {
                 "text": "kdoaskdoa"
             }]
         }]
     }
Example #12
0
 def setUp(self):
     user = create_user("2131")
     book = create_book("Clean Code123", "Robert", "Computer")
     self.user_book = UserBooks(user, book)
     db.session.add(self.user_book)
     db.session.commit()
     self.args = {
         "user_id": user.user_id,
         "pages_read": 123,
         "pages": 321,
         "book_id": self.user_book.id,
         "notes": [{"id": "1", "text": "rafael"}],
     }
Example #13
0
def oauthroute():
    state = request.args["state"]
    print(state)

    if not verify_helper.state_exists(client, state):
        return {"Error": "The state returned was incorrect."}, 400

    token = oauth.fetch_token('https://accounts.google.com/o/oauth2/token',
                              authorization_response=request.url,
                              client_secret=client_secret)
    req = requests.Request()

    id_info = id_token.verify_oauth2_token(token['id_token'], req, client_id)

    # https://google-auth.readthedocs.io/en/latest/reference/google.oauth2.id_token.html
    # Straight from the documentation for this function.
    if id_info['iss'] not in [
            'accounts.google.com', 'https://accounts.google.com'
    ]:

        return {
            "Error":
            "The JWT is invalid.  The issuer is listed as: " + id_info["iss"]
        }, 400

    # Need to create the user account and store the sub value of their jwt as the user's unique_id.
    # Skip account creation if the user already has an account.  We only need to display their information again.
    if not helper.sub_matches_user(client, id_info["sub"]):

        payload = {"unique_id": id_info["sub"], "email": id_info["email"]}
        # helper.create_user(client, request, {"unique_id": id_info["sub"]})
        helper.create_user(client, request, payload)

    verify_helper.delete_state(client, state)

    return render_template("user_info.html",
                           token=token['id_token'],
                           sub=id_info['sub'])
Example #14
0
 def setUp(self):
     user = create_user("2131")
     book = create_book("Clean Code123", "Robert", "Computer")
     self.user_book = UserBooks(user, book)
     db.session.add(self.user_book)
     db.session.commit()
     self.args = {
         "user_id": user.user_id,
         "pages_read": 123,
         "pages": 321,
         "book_id": self.user_book.id,
         "notes": [{
             "id": "1",
             "text": "rafael"
         }]
     }
Example #15
0
def gconnect():
    # Validate state token
    if request.args.get('state') != login_session['state']:
        response = make_response(json.dumps('Invalid state parameter.'), 401)
        response.headers['Content-Type'] = 'application/json'
        return response
    # Obtain authorization code, now compatible with Python3
    request.get_data()
    code = request.data.decode('utf-8')

    try:
        # Upgrade the authorization code into a credentials object
        oauth_flow = flow_from_clientsecrets('client_secrets.json', scope='')
        oauth_flow.redirect_uri = 'postmessage'
        credentials = oauth_flow.step2_exchange(code)
    except FlowExchangeError:
        response = make_response(
            json.dumps('Failed to upgrade the authorization code.'), 401)
        response.headers['Content-Type'] = 'application/json'
        return response

    # Check that the access token is valid.
    access_token = credentials.access_token
    url = ('https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=%s' %
           access_token)
    # Submit request, parse response - Python3 compatible
    h = httplib2.Http()
    response = h.request(url, 'GET')[1]
    str_response = response.decode('utf-8')
    result = json.loads(str_response)

    # If there was an error in the access token info, abort.
    if result.get('error') is not None:
        response = make_response(json.dumps(result.get('error')), 500)
        response.headers['Content-Type'] = 'application/json'

    # Verify that the access token is used for the intended user.
    gplus_id = credentials.id_token['sub']
    if result['user_id'] != gplus_id:
        response = make_response(
            json.dumps("Token's user ID doesn't match given user ID."), 401)
        response.headers['Content-Type'] = 'application/json'
        return response

    # Verify that the access token is valid for this app.
    if result['issued_to'] != CLIENT_ID:
        response = make_response(
            json.dumps("Token's client ID does not match app's."), 401)
        response.headers['Content-Type'] = 'application/json'
        return response

    stored_access_token = login_session.get('access_token')
    stored_gplus_id = login_session.get('gplus_id')
    if stored_access_token is not None and gplus_id == stored_gplus_id:
        response = make_response(
            json.dumps('Current user is already connected.'), 200)
        response.headers['Content-Type'] = 'application/json'
        return response

    # Store the access token in the session for later use.
    login_session['access_token'] = access_token
    login_session['gplus_id'] = gplus_id

    # Get user info
    userinfo_url = "https://www.googleapis.com/oauth2/v1/userinfo"
    params = {'access_token': access_token, 'alt': 'json'}
    answer = requests.get(userinfo_url, params=params)

    data = answer.json()

    login_session['username'] = data['name']
    login_session['picture'] = data['picture']
    login_session['email'] = data['email']

    # see if user exists, if it doesn't make a new one
    user_id = get_user_id(login_session['email'])
    if not user_id:
        user_id = create_user(login_session)
    login_session['user_id'] = user_id

    output = ''
    output += '<h1>Welcome, '
    output += login_session['username']
    output += '!</h1>'
    output += '<img src="'
    output += login_session['picture']
    output += ' " style = "width: 300px; height: 300px;border-radius: 150px;-webkit-border-radius: 150px;-moz-border-radius: 150px;"> '
    flash("you are now logged in as %s" % login_session['username'])
    return output
Example #16
0
 def setUp(self):
     self.user = create_user("87656")
     self.args = {"name" : "Rafael2" , "auth_token" : "123", "auth_token_secret" : "3123123", "user_id" : "87656"}
Example #17
0
 def setUp(self):
     create_user("12324576918")
     self.args = {"user_id" : "12324576918"}
Example #18
0
 def setUp(self):
     create_user("12324576918")
     self.args = {"user_id": "12324576918"}
Example #19
0
def facebook_login():
    """Implement Oauth 2.0 login method with user's Facebook account"""
    if request.args.get('state') != login_session['state']:
        response = make_response(json.dumps('Invalid state parameter.'), 401)
        response.headers['Content-Type'] = 'application/json'
        return response
    access_token = request.data
    print "access token received %s " % access_token

    app_id = facebook_client_secrets['web']['app_id']
    app_secret = facebook_client_secrets['web']['app_secret']
    url = 'https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=%s&client_secret=%s&fb_exchange_token=%s' % (
        app_id, app_secret, access_token)
    h = httplib2.Http()
    result = h.request(url, 'GET')[1]

    # Use token to get user info from API
    # userinfo_url = "https://graph.facebook.com/v2.5/me"
    # strip expire tag from access token
    token = result.split("&")[0]

    url = 'https://graph.facebook.com/v2.5/me?%s&fields=name,id,email' % token
    h = httplib2.Http()
    result = h.request(url, 'GET')[1]
    print result
    # print "url sent for API access:%s"% url
    # print "API JSON result: %s" % result
    data = json.loads(result)
    login_session['provider'] = 'facebook'
    login_session['username'] = data["name"]
    login_session['email'] = data["email"]
    login_session['facebook_id'] = data["id"]

    # The token must be stored in login_session in order to properly logout
    # let's strip out the information before the equals sign in our token
    stored_token = token.split("=")[1]
    login_session['access_token'] = stored_token

    # Get user picture
    url = 'https://graph.facebook.com/v2.5/me/picture?%s&redirect=0&height=200&width=200' % token
    h = httplib2.Http()
    result = h.request(url, 'GET')[1]
    data = json.loads(result)

    login_session['picture'] = data["data"]["url"]

    # see if user exists
    user_id = get_user_id(login_session['email'])
    if not user_id:
        user_id = create_user(login_session)
    login_session['user_id'] = user_id

    output = ''
    output += '<h1>Welcome, '
    output += login_session['username']

    output += '!</h1>'
    output += '<img src="'
    output += login_session['picture']
    output += ' " style = "width: 300px; height: 300px;border-radius: 150px;-webkit-border-radius: 150px;-moz-border-radius: 150px;"> '

    flash("You are now signed in as %s" % login_session['username'])
    return output
Example #20
0
 def login(self, uid, access_token):
     """ Login routine.
         From FacebookRequest: login(facebook_uid
     """
     self.sns = 'fb'
     ukey = '%s_%s' % (self.sns, uid)
     u = helper.from_cache(ukey)
     if not u:
         u = helper.get_user_by_key(ukey, False)  #memcache=False
         if not u:
             graph = facebook.GraphAPI(access_token)
             profile = graph.get_object('me')
             u = helper.create_user(ukey, profile['name'],
                                    profile.get('email', None),
                                    False)  #save=False
             if not u:
                 logging.error(
                     'FacebookRequest.login: helper.create_user failed')
                 self.redirect_with_msg(
                     'Server in maintenance, please try later, thank you.')
                 self.get = self.post = (lambda *args: None)
                 return
             u.access_token = access_token
             u.save()
             logging.debug('FacebookRequest.login: New User %s saved' %
                           ukey)
         else:
             now = datetime.utcnow()
             u._cache_time = now
             if helper.to_cache(
                     ukey, u, helper.PLAYER_CACHE_SECS
             ):  #2 hours, if memcache fails, do not task/dau or send_email
                 #                    if u.lastime.day != now.day or u.lastime.month != now.month:
                 #                        taskqueue.add(url='/task/dau',params={'usr':ukey,'act':'login'})
                 taskqueue.add(url='/task/dau',
                               params={
                                   'usr': ukey,
                                   'act': 'login'
                               })
                 if ukey not in [
                         'fb_669391906', 'fb_1464710918', 'fb_1842536962',
                         'fb_1831016858'
                 ]:
                     helper.send_email(
                         'Login SuiComics: %s(%s) @ %s' %
                         (u.name, ukey, now), 'OK')
                 else:
                     helper.send_email(
                         'Login SuiComics: %s(%s) @ %s' %
                         (u.name, ukey, now), 'OK - to remove this')
     else:
         #got user from memcache
         if u.access_token != access_token:
             u.access_token = access_token
             u.save()
             logging.debug(
                 'FacebookRequest.login: access_token updated while %s still in memcache'
                 % ukey)
         elif hasattr(u, '_cache_time'):
             if (datetime.utcnow() - u._cache_time).seconds >= 3600:
                 u._cache_time = datetime.utcnow()
                 helper.to_cache(ukey, u, helper.PLAYER_CACHE_SECS)
     if self.request.headers.get('User-Agent', '').find('MSIE') >= 0:
         #logging.debug('addHeader P3P for MSIE')
         #self.response.headers.add_header('P3P','CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"')
         self.response.headers.add_header('P3P', 'CP="SuiComics"')
     args = get_session_from_cookie(self.request.cookies)
     if not args or args['uid'] != ukey:
         put_cookie(self.response.headers, ukey, u.token, self.sns)
     self.user = u
     self.tempvars = {
         'user': u,
         'sns': 'fb',
         'login': True,
         'uname': u.name,
         'onFacebook': True
     }
     if self.request.get('ref') == 'bookmarks':
         c = self.request.get('count')
         if c != '0':
             helper.clear_fb_count(uid)
Example #21
0
 def initialize(self, request, response):
     """ Authenticate through Google account.
     """
     webapp.RequestHandler.initialize(self, request, response)
     from google.appengine.api import users
     user = users.get_current_user()
     if not user:
         logging.debug(
             'GoogleRequest.initialize: not login, redirect to /gg')
         self.redirect(users.create_login_url("/gg/home"))
         self.get = (lambda *args: None)
         self.post = (lambda *args: None)
     else:
         #user logged in google account,check our cookie
         sns = 'gg'  #Google: how to make use of GMail contact, chat etc? via OAuth
         uid = '%s_%s' % (sns, user.user_id())
         logging.debug(
             'GoogleRequest.initialize: %s visit via Google, try login' %
             uid)
         su = helper.from_cache(uid)
         if not su:
             su = helper.get_user_by_key(uid, False)  #no memcache
             if su is None:
                 logging.debug(
                     'GoogleRequest.initialize: New user, try create')
                 em = user.email()
                 name = em[:em.find('@')]
                 su = helper.create_user(uid, name,
                                         em)  #auto cached if successful
                 if su is None:
                     logging.error(
                         'GoogleRequest.initialize: create_user(%s,%s,%s) failed'
                         % (uid, name, em))
                     self.response.out.write(
                         'Server in maintenance, please come back later. Thank you.'
                     )
                     self.get = self.post = (
                         lambda *args: None)  #stop calling request handler
                     return
             else:
                 logging.debug(
                     'GoogleRequest.initialize: new session today, try cache'
                 )
                 su._cache_time = datetime.utcnow()
                 if helper.to_cache(uid, su, helper.PLAYER_CACHE_SECS):
                     logging.debug(
                         'GoogleRequest.initialize: Memcached, task dau and send email to admin'
                     )
                     taskqueue.add(url='/task/dau',
                                   params={
                                       'usr': uid,
                                       'act': 'login'
                                   })
                     #if uid not in ['gg_109722387073140662444','gg_108772542023352813713']:
                     helper.send_email(
                         'Login SuiComics: %s(%s) @ %s' %
                         (su.name, uid, datetime.utcnow()), 'OK')
         else:
             #in memcache
             logging.debug('GoogleRequest.initialize: in memcache, revisit')
             if hasattr(su, '_cache_time'):
                 if (datetime.utcnow() - su._cache_time).seconds >= 3600:
                     su._cache_time = datetime.utcnow()
                     helper.to_cache(uid, su, helper.PLAYER_CACHE_SECS)
         self.tempvars = {
             'user': su,
             'sns': 'gg',
             'login': True,
             'uname': su.name,
             'onFacebook': False
         }
         args = get_session_from_cookie(self.request.cookies)
         if not args:
             put_cookie(self.response.headers, uid, su.token,
                        sns)  #a generated random token
         else:
             self.tempvars.update(args)  #['sns','uid','token']
         self.sns = sns
         self.user = su
Example #22
0
 def setUp(self):
     book = create_book("Clean Code1", "Roberto", "Computer")
     user = create_user("kdpao-")
     self.user_book = create_user_book(user, book)
     note = create_note(self.user_book)
     self.args = {"note_id" : note.id, "text" : "daskdopaskdpoaskdpoaks"};
Example #23
0
 def setUp(self):
     book = create_book("Clean Code1", "Roberto", "Computer")
     user = create_user("312-0asd")
     self.user_book = create_user_book(user, book)
     self.note = create_note(self.user_book)
     self.args = {"note_id" : self.note.id}
Example #24
0
def facebook_login():
    """Implement Oauth 2.0 login method with user's Facebook account"""
    if request.args.get('state') != login_session['state']:
        response = make_response(json.dumps('Invalid state parameter.'), 401)
        response.headers['Content-Type'] = 'application/json'
        return response
    access_token = request.data
    print "access token received %s " % access_token

    app_id = facebook_client_secrets['web']['app_id']
    app_secret = facebook_client_secrets['web']['app_secret']
    url = 'https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=%s&client_secret=%s&fb_exchange_token=%s' % (
        app_id, app_secret, access_token)
    h = httplib2.Http()
    result = h.request(url, 'GET')[1]

    # Use token to get user info from API
    # userinfo_url = "https://graph.facebook.com/v2.5/me"
    # strip expire tag from access token
    token = result.split("&")[0]

    url = 'https://graph.facebook.com/v2.5/me?%s&fields=name,id,email' % token
    h = httplib2.Http()
    result = h.request(url, 'GET')[1]
    print result
    # print "url sent for API access:%s"% url
    # print "API JSON result: %s" % result
    data = json.loads(result)
    login_session['provider'] = 'facebook'
    login_session['username'] = data["name"]
    login_session['email'] = data["email"]
    login_session['facebook_id'] = data["id"]

    # The token must be stored in login_session in order to properly logout
    # let's strip out the information before the equals sign in our token
    stored_token = token.split("=")[1]
    login_session['access_token'] = stored_token

    # Get user picture
    url = 'https://graph.facebook.com/v2.5/me/picture?%s&redirect=0&height=200&width=200' % token
    h = httplib2.Http()
    result = h.request(url, 'GET')[1]
    data = json.loads(result)

    login_session['picture'] = data["data"]["url"]

    # see if user exists
    user_id = get_user_id(login_session['email'])
    if not user_id:
        user_id = create_user(login_session)
    login_session['user_id'] = user_id

    output = ''
    output += '<h1>Welcome, '
    output += login_session['username']

    output += '!</h1>'
    output += '<img src="'
    output += login_session['picture']
    output += ' " style = "width: 300px; height: 300px;border-radius: 150px;-webkit-border-radius: 150px;-moz-border-radius: 150px;"> '

    flash("You are now signed in as %s" % login_session['username'])
    return output
Example #25
0
 def setUp(self):
     book = create_book("Clean Code1", "Roberto", "Computer")
     user = create_user("312-0asd")
     self.user_book = create_user_book(user, book)
     self.note = create_note(self.user_book)
     self.args = {"note_id": self.note.id}
Example #26
0
 def setUp(self):
     book = create_book("Clean Code1", "Roberto", "Computer")
     user = create_user("kdpao-")
     self.user_book = create_user_book(user, book)
     note = create_note(self.user_book)
     self.args = {"note_id": note.id, "text": "daskdopaskdpoaskdpoaks"}
Example #27
0
def google_login():
    """Implement Oauth 2.0 login method with user's Google account"""
    # Validate state token
    if request.args.get('state') != login_session['state']:
        response = make_response(json.dumps('Invalid state parameter.'), 401)
        response.headers['Content-Type'] = 'application/json'
        return response
    # Obtain authorization code, now compatible with Python3
    request.get_data()
    code = request.data.decode('utf-8')

    try:
        # Upgrade the authorization code into a credentials object
        oauth_flow = flow_from_clientsecrets(
            os.path.join(app_path, 'client_secrets.json'), scope='')
        oauth_flow.redirect_uri = 'postmessage'
        credentials = oauth_flow.step2_exchange(code)
    except FlowExchangeError:
        response = make_response(
            json.dumps('Failed to upgrade the authorization code.'), 401)
        response.headers['Content-Type'] = 'application/json'
        return response

    # Check that the access token is valid.
    access_token = credentials.access_token
    url = ('https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=%s'
           % access_token)
    # Submit request, parse response - Python3 compatible
    h = httplib2.Http()
    response = h.request(url, 'GET')[1]
    str_response = response.decode('utf-8')
    result = json.loads(str_response)

    # If there was an error in the access token info, abort.
    if result.get('error') is not None:
        response = make_response(json.dumps(result.get('error')), 500)
        response.headers['Content-Type'] = 'application/json'

    # Verify that the access token is used for the intended user.
    gplus_id = credentials.id_token['sub']
    if result['user_id'] != gplus_id:
        response = make_response(
            json.dumps("Token's user ID doesn't match given user ID."), 401)
        response.headers['Content-Type'] = 'application/json'
        return response

    # Verify that the access token is valid for this app.
    if result['issued_to'] != google_client_secrets['web']['client_id']:
        response = make_response(
            json.dumps("Token's client ID does not match app's."), 401)
        response.headers['Content-Type'] = 'application/json'
        return response

    stored_access_token = login_session.get('access_token')
    stored_gplus_id = login_session.get('gplus_id')
    if stored_access_token is not None and gplus_id == stored_gplus_id:
        response = make_response(json.dumps(
                                'Current user is already connected.'),
                                 200)
        response.headers['Content-Type'] = 'application/json'
        return response

    # Store the access token in the session for later use.
    login_session['access_token'] = access_token
    login_session['gplus_id'] = gplus_id

    # Get user info
    userinfo_url = "https://www.googleapis.com/oauth2/v2/userinfo"
    params = {'access_token': access_token, 'alt': 'json'}
    answer = requests.get(userinfo_url, params=params)

    data = answer.json()

    login_session['username'] = data['name']
    login_session['picture'] = data['picture']
    login_session['email'] = data['email']
    login_session['provider'] = 'google'

    # see if user exists, if it doesn't make a new one
    user_id = get_user_id(login_session['email'])
    if not user_id:
        user_id = create_user(login_session)
    login_session['user_id'] = user_id

    output = ''
    output += '<h1>Welcome, '
    output += login_session['username']
    output += '!</h1>'
    output += '<img src="'
    output += login_session['picture']
    output += ' " style = "width: 300px; height: 300px;border-radius: 150px;-webkit-border-radius: 150px;-moz-border-radius: 150px;"> '
    flash("You are now signed in as %s" % login_session['email'])
    return output
def signup():
    if request.method == 'POST':
        message = helper.create_user(request)
        return render_template("app/index.html", alert=message)
    else:
        return page_not_found(404)