예제 #1
0
def seed_db():
    user1 = User(name='user1', email='*****@*****.**')
    user2 = User(name='user2', email='*****@*****.**')
    db.session.add(user1)
    db.session.add(user2)
    db.session.commit()

    categories_data = [
        {'name': 'Football'},
        {'name': 'Tennis'},
    ]

    for categories in categories_data:
        new_category = Category(name=categories['name'])
        db.session.add(new_category)
    db.session.commit()

    items_data = [
        {'name': 'Ball', 'description': 'Football', 'category_id': 1},
        {'name': 'Net', 'description': 'Football', 'category_id': 1},
        {'name': 'Racket', 'description': 'Tennis', 'category_id': 2},
        {'name': 'Tennis ball', 'description': 'Football', 'category_id': 2},
    ]
    for index, item in enumerate(items_data):
        new_item = Item(name=item['name'], description=item['description'],
                        category_id=item['category_id'], user_id=(index % 2 + 1))
        db.session.add(new_item)
    db.session.commit()
예제 #2
0
def callback():
    """
    google callback route
    """
    # redirect to home page if user is logged in
    if current_user is not None and current_user.is_authenticated:
        return redirect(url_for('index'))
    # check for errors
    if 'error' in request.args:
        # user denied access to their account
        if request.args.get('error') == 'access_denied':
            return 'Access denied by user'
        # some unknown error occured
        return 'Some error has occured. Please try again'
    # missing state information in the callback
    # something went wrong, login again
    if 'code' not in request.args and 'state' not in request.args:
        return redirect(url_for('login'))
    # successful authentication confirmed at this point
    google = get_google_auth(state=session['oauth_state'])
    try:
        # fetch token from google servers
        token = google.fetch_token(Auth.TOKEN_URI,
                                   client_secret=Auth.CLIENT_SECRET,
                                   authorization_response=request.url)
    except HTTPError as e:
        return 'HTTPError occurred: ' + str(e)
    # get handler for server token
    google = get_google_auth(token=token)
    # get user info now that we have token for user
    resp = google.get(Auth.USER_INFO)
    if resp.status_code == 200:
        # user data fetched
        user_data = resp.json()
        email = user_data['email']
        user = User.query.filter_by(email=email).first()
        if user is None:
            # create new user if user with the email didn't exist
            user = User()
            user.email = email
        user.name = user_data['name']
        user.token = json.dumps(token)
        # save user to database
        db.session.add(user)
        db.session.commit()
        # login user now using flask_login
        login_user(user)
        return redirect(url_for('index'))
    return 'Error when fetching user information from Google'
예제 #3
0
def google_login():
    payload = request.get_json()

    if not (payload and 'id_token' in payload):
        return render_json_error('Id token is required', 400)

    id_token = payload['id_token']

    user_info = auth_helper.get_user_info(id_token)
    if not user_info:
        return render_json_error('Id token is not valid', 401)

    # Try to find user in our db
    user = db.session.query(User).filter(
        User.email == user_info.get('email')).first()
    # If user not in db, create new
    if not user:
        user = User(name=user_info.get('name'),
                    email=user_info.get('email'),
                    picture=user_info.get('picture'))
        db.session.add(user)
        db.session.commit()

    return render_json({
        'access_token': create_jwt_token(user),
        'current_user': userSchema.dump(user).data,
    })
예제 #4
0
def create_user(login_session):
    newUser = User(name=login_session['username'],
                   email=login_session['email'],
                   picture=login_session['picture'])
    db.add(newUser)
    db.commit()
    user = db.query(User).filter_by(email=login_session['email']).one()
    return user.id
예제 #5
0
def createUser(session):
    """ Create new user record """
    newUser = User(name=session['username'], email=session[
                   'email'], picture=session['picture'])
    db_session.add(newUser)
    db_session.commit()
    user = db_session.query(User).filter_by(email=session['email']).one()
    return user.id
예제 #6
0
def add_users(list_of_users):
    for dic in list_of_users:
        user = User(
            email=dic['email'],
            name=dic['name'],
            picture=dic['picture'],
        )
        session.add(user)
    session.commit()
예제 #7
0
def create_user(user_session):
    """
    Creates a new user in the app's database
    with data from the session object
    """
    user = User(name=user_session['username'],
                email=user_session['email'],
                picture=user_session['picture'])
    db.session.add(user)
    # flush() is used to get the id of the new user
    db.session.flush()
    db.session.commit()
    return user.id
예제 #8
0
def get_user_from_token(token):
    """Validate token and retrieve user from token
    :param token: str
    :return: a User or None
    """
    secret = current_app.config.get('JWT_SECRET')
    try:
        payload = jwt.decode(token, secret, algorithms=['HS256'])
    except (DecodeError, ExpiredSignatureError):
        return None

    if payload and payload['user_id']:
        return User.get_by_id(payload['user_id'])
    return None
예제 #9
0
파일: views.py 프로젝트: pierva/catalog-app
def createUser(login_session):
    try:
        newUser = User(email=login_session['email'],
                       username=login_session['username'],
                       password=''.join(
                           random.choice(string.ascii_uppercase +
                                         string.digits) for x in range(16)),
                       admin=False)
        db.session.add(newUser)
        db.session.commit()
        user = User.query.filter_by(email=login_session['email']).one()
        return user.id
    except exc.SQLAlchemyError as e:
        return None
예제 #10
0
def create_user():
    """
    Function to create a new user with the info from login session.
    """

    new_user = User(name=login_session['username'],
                    email=login_session['email'],
                    picture=login_session['picture'])
    db_session.add(new_user)
    db_session.commit()
    user = db_session.query(User)\
        .filter_by(email=login_session['email'])\
        .one()
    return user.id
예제 #11
0
def create_user(session):
    """Add a new user into the database.

    Args:
      session: object containing user's information from oauth provider.

    Returns:
      Newly added user object.
    """
    newUser = User(name=session['username'],
                   email=session['email'],
                   picture=session['picture'])
    db.session.add(newUser)
    db.session.commit()
    user = User.query.filter_by(email=session['email']).one()
    return user.id
예제 #12
0
def login_google():
    if current_user is not None and current_user.is_authenticated:
        return redirect(url_for('site.home'))

    if 'error' in request.args:
        if request.args.get('error') == 'access_denied':
            return 'You denied access.'
        return 'Error encountered.'

    if 'code' not in request.args and 'state' not in request.args:
        return redirect(url_for('login'))
    else:
        google = get_google_auth(state=session['oauth_state'])
        try:
            token = google.fetch_token(
                app.config['TOKEN_URI'],
                client_secret=app.config['CLIENT_SECRET'],
                authorization_response=request.url)
        except HTTPError:
            return 'HTTPError occurred.'

        google = get_google_auth(token=token)
        resp = google.get(app.config['USER_INFO'])

        if resp.status_code == 200:

            user_data = resp.json()
            email = user_data['email']
            user = User.query.filter_by(email=email).first()

            if user is None:
                user = User()
                user.email = email

            user.name = user_data['name']

            user.tokens = json.dumps(token)
            user.avatar = user_data['picture']
            user.provider = "google"

            db_session.add(user)
            db_session.commit()

            login_user(user)
            return redirect(url_for('site.home'))

        return 'Could not fetch your information.'
예제 #13
0
def google_logged_in(blueprint, token):
    if not token:
        flash("Failed to log in with Google.", category="danger")
        return False

    resp = blueprint.session.get("/oauth2/v2/userinfo")
    if not resp.ok:
        msg = "Failed to fetch user info from Google."
        flash(msg, category="danger")
        return False

    google_info = resp.json()
    google_user_id = str(google_info["id"])

    query = OAuth.query.filter_by(
        provider=blueprint.name,
        provider_user_id=google_user_id,
    )
    try:
        oauth = query.one()
    except NoResultFound:
        oauth = OAuth(
            provider=blueprint.name,
            provider_user_id=google_user_id,
            token=token,
        )

    if oauth.user:
        login_user(oauth.user)
        flash("Successfully signed in with Google.", category='success')

    else:
        user = User(email=google_info["email"],
                    name=google_info["name"],
                    avatar=google_info["picture"])
        oauth.user = user
        db.session.add_all([user, oauth])
        db.session.commit()
        login_user(user)
        flash("Successfully signed in with Google.", category='success')

    # Disable Flask-Dance's default behavior for saving the OAuth token
    return False
예제 #14
0
파일: views.py 프로젝트: pierva/catalog-app
def register():
    form = RegisterForm(request.form)
    if request.method == 'GET':
        return render_template('user/register.html',
                               form=form,
                               user=current_user)
    elif request.method == 'POST':
        if form.validate_on_submit():
            try:
                user = User(email=form.email.data,
                            password=form.password.data,
                            admin=form.admin.data)
                db.session.add(user)
                db.session.commit()
                token = generate_confirmation_token(user.email)
                login_user(user)
                flash({
                    'message': 'New user successfully created',
                    'role': 'success'
                })
                return redirect(url_for("main.showHome"))
            except exc.SQLAlchemyError as e:
                flash({
                    'message':
                    'Unexpected database error while processing ' +
                    'your request.',
                    'role':
                    'failure'
                })
                return render_template('user/register.html',
                                       form=form,
                                       user=current_user)
            except Exception as e:
                flash({'message': e, 'role': 'failure'})
                return abort(500)
        return render_template('user/register.html',
                               form=form,
                               user=current_user)
예제 #15
0
def initdb():
    from catalog.models import User, Category, Course
    user1 = User(name='Seunghun Lee',
                 email='*****@*****.**')

    db.session.add(user1)
    db.session.commit()

    categories = [
        'Programming Language',
        'Math',
        'Physics',
        'Deep Learning',
    ]


    # Add Categories
    for category_name in categories:
        new_category = Category(name=category_name, user_id=1)
        db.session.add(new_category)
        db.session.flush()

    course = Course(name='Programming Foundations with Python',
                    level='Beginner',
                    url='https://www.udacity.com/course/programming-foundations-with-python--ud036',
                    image_url='https://s3-us-west-1.amazonaws.com/udacity-content/course/images/ud036-0619766.jpg',
                    description='Learn Object-Oriented Programming',
                    provider='Udacity',
                    category_id=1,
                    user_id=1)
    db.session.add(course)

    course = Course(name='Linear Algebra Refresher Course',
                    level='Intermediate',
                    url='https://www.udacity.com/course/linear-algebra-refresher-course--ud953',
                    image_url='https://s3-us-west-1.amazonaws.com/udacity-content/course/images/ud953-d95e68e.jpg',
                    description='A Brief Refresher (with Python!)',
                    provider='Udacity',
                    category_id=2,
                    user_id=1)
    db.session.add(course)

    course = Course(name='Intro to Physics',
                    level='Beginner',
                    url='https://www.udacity.com/course/intro-to-physics--ph100',
                    image_url='https://lh6.ggpht.com/9xDuLEr_4CuXcBZVbMQPagaUOvdUOH_T8V4I9Nm9XvDogvR4_yudI60v5_0tWedKx2LInYQiV6KOGqNPXuo=s0#w=436&h=268',
                    description='Landmarks in Physics',
                    provider='Udacity',
                    category_id=3,
                    user_id=1)
    db.session.add(course)

    course = Course(name='Deep Learning',
                    level='Advanced',
                    url='https://www.udacity.com/course/deep-learning--ud730',
                    image_url='https://s3-us-west-1.amazonaws.com/udacity-content/course/images/ud730-b3af4bf.jpg',
                    description='Take machine learning to the next level',
                    provider='Udacity',
                    category_id=4,
                    user_id=1)
    db.session.add(course)

    db.session.commit()

    for course in db.session.query(Course).all():
        print course.id, course.name, 'in', course.category.name
예제 #16
0
 def create(self, validated_data):
     password = validated_data.pop('password')
     user = User(**validated_data)
     user.set_password(password)
     user.save()
     return user
예제 #17
0
        db.add(item)
    db.commit()


def add_item(category, item):
    """Add an item to a category."""
    item.category_id = category.id
    db.add(item)
    db.commit()


# Sample user

user = User(
    name="Werner Herzog",
    email="*****@*****.**",
    picture=
    "http://i3.kym-cdn.com/entries/icons/original/000/019/530/2014_BAMPresents_WernerHerzog_613x463.jpg"
)  # NOQA

db.add(user)
db.commit()

# Sample categories

category1 = Category(name="Simon & Garfunkel")
db.add(category1)

category2 = Category(name="More Simon & Garfunkel")
db.add(category2)

category3 = Category(name="Fruits & Vegetables")
예제 #18
0
    Category(name="Nintendo 64", slug="nintendo-64"),
    Category(name="Sega Saturn", slug="sega-saturn"),
    Category(name="Dreamcast", slug="dreamcast"),
    Category(name="Playstation", slug="playstation"),
    Category(name="GameBoy", slug="gameboy"),
    Category(name="Playstation 2", slug="playstation-2"),
    Category(name="Xbox 360", slug="xbox-360")
]

# Define some dummy users
seed_users = [
    User(
        username="******",
        password='******',
        email="*****@*****.**",
        name="Dummy",
        avatar="https://pbs.twimg.com/profile_images/2671170543/18debd694829e"
               "d78203a5a36dd364160_400x400.png",
        telephone="+1-202-555-0100"
    ),
    User(
        username="******",
        password='******',
        email="*****@*****.**",
        name="John Doe",
        avatar="https://pbs.twimg.com/profile_images/2671170543/18debd69"
               "4829ed78203a5a36dd364160_400x400.png",
        telephone="+1-333-222-1111"
    )
]
예제 #19
0
def add_items(category, item_names):
    for name in item_names:
        item = Item(name=name, category_id=category.id)
        db.add(item)
    db.commit()


def add_item(category, item):
    item.category_id = category.id
    db.add(item)
    db.commit()


user = User(
    name="Yang Yuan",
    email="*****@*****.**",
    picture=
    "http://2.bp.blogspot.com/-S5USSONx5P0/VnEOIKKvJOI/AAAAAAAAsZw/KrKRoPui3Vk/s0-Ic42/000.jpg"
)

db.add(user)
db.commit()

category1 = Category(name="Martial Arts")
db.add(category1)

category2 = Category(name="Painting Arts")
db.add(category2)

category3 = Category(name="Music Arts")
db.add(category3)
예제 #20
0
def main():
    #drop the database tables
    #create the database and the tables
    db.drop_all()
    db.create_all()
    # Create stock, out of the box user
    UserArtV = User(name="Art Vandalay",
                    email="*****@*****.**",
                    picture="/static/costanza.jpg")
    db.session.add(UserArtV)
    db.session.commit()

    category1 = Category(name="Soccer")
    db.session.add(category1)
    db.session.commit()

    category2 = Category(name="Basketball")
    db.session.add(category2)
    db.session.commit()

    category3 = Category(name="Baseball")
    db.session.add(category3)
    db.session.commit()

    category4 = Category(name="Frisbee")
    db.session.add(category4)
    db.session.commit()

    category5 = Category(name="Snowboarding")
    db.session.add(category5)
    db.session.commit()

    category6 = Category(name="Rock Climbing")
    db.session.add(category6)
    db.session.commit()

    category7 = Category(name="Foosball")
    db.session.add(category7)
    db.session.commit()

    category8 = Category(name="Skating")
    db.session.add(category8)
    db.session.commit()

    category9 = Category(name="Hockey")
    db.session.add(category9)
    db.session.commit()

    item1 = Item(user_id=1,
                 name="Stick",
                 description="Interdum odio dignissim in nisi metus\
                 , a elit sit dis cubilia, fringilla praesent pulvinar porta.\
                 Sodales hac bibendum",
                 category=category9)
    db.session.add(item1)
    db.session.commit()

    item2 = Item(
        user_id=1,
        name="Goggles",
        description="Primis dignissim mattis erat bibendum eu arcu quis\
                  cursus",
        category=category5)
    db.session.add(item2)
    db.session.commit()

    item3 = Item(user_id=1,
                 name="Snowboard",
                 description="Curae feugiat netus auctor lacus",
                 category=category5)
    db.session.add(item3)
    db.session.commit()

    item4 = Item(user_id=1,
                 name="Soccer Item 1",
                 description="Nec odio consectetur cum \
                 consequat quam massa habitant placerat, nam tincidunt mi egestas \
                 eu taciti velit dictum aenean, vestibulum inceptos semper \
                 penatibus proin fringilla quisque. Cursus ridiculus facilisis \
                 class erat varius cum consequat, ac at justo mattis magna dui \
                 suscipit interdum, faucibus auctor rhoncus diam parturient a.",
                 category=category1)
    db.session.add(item4)
    db.session.commit()

    item5 = Item(user_id=1,
                 name="Soccer Item 2",
                 description="Fermentum scelerisque \
                 facilisis tortor rhoncus magna maecenas, blandit ligula metus \
                 amet congue fames pulvinar, eget aliquam augue eros per. Vel \
                 etiam dolor ornare aliquet posuere inceptos maecenas nam, varius \
                 eget ad imperdiet mi phasellus turpis nisl libero, urna \
                 tristique aptent ultricies taciti montes parturient.",
                 category=category1)
    db.session.add(item5)
    db.session.commit()

    item6 = Item(user_id=1,
                 name="Soccer Item 3",
                 description="Placerat primis taciti etiam \
                 ut convallis accumsan lorem tortor sapien faucibus cursus, quam \
                 nulla tempor morbi rhoncus suscipit sociis in litora amet enim, \
                 praesent aptent bibendum integer ornare dapibus justo rutrum \
                 aliquet vivamus. Taciti dignissim neque euismod elit maecenas \
                 aptent interdum mollis vel sociosqu donec, nunc gravida eget ad \
                 quisque viverra vitae amet hendrerit.",
                 category=category1)
    db.session.add(item6)
    db.session.commit()

    item7 = Item(user_id=1,
                 name="Soccer Item 4",
                 description="Litora turpis et dignissim \
                 nascetur faucibus taciti vivamus interdum, tempor dapibus lorem \
                 venenatis enim conubia lacus netus hac, dis magnis vel nulla \
                 phasellus bibendum fringilla. Sed torquent taciti accumsan elit \
                 sagittis nulla magnis, sit praesent volutpat nam consectetur \
                 velit, magna sociis id ultrices diam non.",
                 category=category1)
    db.session.add(item7)
    db.session.commit()

    item8 = Item(user_id=1,
                 name="Frisbee",
                 description="Interdum odio dignissim in nisi \
                 metus, a elit sit dis cubilia, fringilla praesent pulvinar \
                 porta. Sodales hac bibendum tincidunt risus mus himenaeos erat \
                 ac, mollis semper integer tempor lacus turpis libero, ridiculus \
                 primis curae aliquet nec rhoncus ante.",
                 category=category4)
    db.session.add(item8)
    db.session.commit()

    item9 = Item(user_id=1,
                 name="Bat",
                 description="Primis dignissim mattis erat bibendum eu arcu \
        quis cursus",
                 category=category3)
    db.session.add(item9)
    db.session.commit()

    #commit changes
    db.session.commit()

    print "Added Categories, Items, and a User."
예제 #21
0
def create_user():
    """Creates the admin user."""
    db.session.add(
        User(email="*****@*****.**", password="******", admin=False))
    db.session.commit()
예제 #22
0
def create_admin():
    """Creates the admin user."""
    db.session.add(
        User(email="*****@*****.**", password="******", admin=True))
    db.session.commit()
예제 #23
0
def gconnect():
    """
    Gathers data from Google Sign In API and places it inside a session variable.
    """
    # 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
    code = request.data

    try:
        # Upgrade the authorization code into a credentials object
        oauth_flow = flow_from_clientsecrets(
            '/var/www/catalog/catalog/client_secrets.json', scope='')
        oauth_flow.redirect_uri = 'postmessage'
        credentials = oauth_flow.step2_exchange(code)
    except FlowExchangeError:
        flash('Failed to upgrade the authorization code.')
        return (url_for('welcome'))


# 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)
    h = httplib2.Http()
    result = json.loads(h.request(url, 'GET')[1])
    # 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'
        return response

    # 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'] = credentials.access_token
    login_session['gplus_id'] = gplus_id

    # Get user info
    userinfo_url = "https://www.googleapis.com/oauth2/v1/userinfo"
    params = {'access_token': credentials.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']

    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;"> '
    flash("you are now logged in as %s" % login_session['username'])

    # Store this User in Database if not existing
    user = User.query.filter_by(gplus_id=str(gplus_id)).first()
    if user is None:
        user = User()
        user.username = login_session['username']
        user.email = login_session['email']
        user.gplus_id = str(login_session['gplus_id'])
        user.created = datetime.utcnow()
        user.modified = datetime.utcnow()
        db.session.add(user)
        db.session.commit()

    return output
예제 #24
0
def add_items(category, item_names):
    for name in item_names:
        item = Item(name=name, category_id=category.id)
        db.add(item)
    db.commit()


def add_item(category, item):
    item.category_id = category.id
    db.add(item)
    db.commit()


user = User(name="Peter Pan",
            email="*****@*****.**",
            picture="https://placehold.it/300x300.png?text=Peter+Pan")

db.add(user)
db.commit()

category1 = Category(name="Books")
db.add(category1)

category2 = Category(name="Electronics")
db.add(category2)

category3 = Category(name="Food")
db.add(category3)

category4 = Category(name="Miscellaneous")
from catalog import db
from catalog.models import User, Category, Item
from datetime import datetime
# Create All Tables
print "Creating tables ..."
db.create_all()

# Create First User
print "Creating User ..."
user = User()
user.username = "******"
user.email = "*****@*****.**"
user.gplus_id = '112241070706889739015'
user.created = datetime.utcnow()
user.modified = datetime.utcnow()
db.session.add(user)
db.session.commit()
print "User - Sophie Reddimalla created ID=" + str(user.id)

print "Creating Sample Category Football ..."
category = Category()
category.title = "Football"
category.user_id = user.id
category.created = datetime.utcnow()
category.modified = datetime.utcnow()
db.session.add(category)
db.session.commit()
print "Category - Football created ID=" + str(category.id)

print "Creating Sample Items in Football ..."
item = Item()