Example #1
0
def signup():
    if request.method == 'POST':
        have_error = False
        params = dict(username=request.form['username'])

        if not valid_username(request.form['username']):
            params['error_username'] = "******"
            have_error = True

        if not valid_password(request.form['password']):
            params['error_username'] = "******"
            have_error = True

        if request.form['password'] != request.form['verify']:
            params['error_verify'] = "Your passwords didn't match."
            have_error = True

        if User.by_name(request.form['username']):
            params['error_username'] = '******'

        if have_error:
            return render_template('signup.html', **params)

        u = User.register(request.form['username'], request.form['password'])
        u.put()

        return make_cookie_resp(request.form['username'])

    return render_template('signup.html')
Example #2
0
def sign_up():
    body = request.get_json()
    user = User(**body)
    user.password = generate_password_hash(user.password).decode('utf8')
    user.save()
    id = user.id
    return {'id': str(id)}, 200
Example #3
0
    async def post(self):
        data = await self.json()

        required = ['login', 'password']
        if not all(key in data for key in required):
            return web.json_response({
                "status": "error",
                "error": "Missing values"
            })

        user_key = User.get_user_by_key(self.app['db'], node_identifier)

        if not user_key:
            password_hash = generate_password_hash(data['password'])
            create_user = await User.create_user(self.app['db'],
                                                 node_identifier,
                                                 data['login'], password_hash)

            response = {
                "status": "User created",
                "key": node_identifier,
                "login": data['login']
            }
            return web.json_response(response)
        else:
            return web.json_response({"error": "User already exists"})
Example #4
0
def add_user(arg_guild, arg_user):
    # Prep session
    session = Session()
    guild = session.query(Guild).filter(Guild.guild_id == arg_guild.id).first()
    new_user = User(arg_user.name, arg_user.id)
    guild.users.append(new_user)
    session.add(new_user)
    session.commit()
    session.close()
Example #5
0
 def get_user(self, user: User):
     query = (f"SELECT * from {self.database}.discord_users "
              f"WHERE discord_id = {user.discord_id};")
     with self:
         self.cursor.execute(query)
         result = self.cursor.fetchone()
     if result:
         return User(result[0], result[1])
     else:
         return False
Example #6
0
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        u = User.login(username, password)
        if not u:
            error = 'Invalid Credentials. Please try again.'
            return render_template('login.html', error=error)
        else:
            return make_cookie_resp(username)
    return render_template('login.html')
Example #7
0
def guild_add_users(arg_guild):
    # Prep session
    session = Session()
    users = arg_guild.members
    guild = session.query(Guild).filter(Guild.guild_id == arg_guild.id).first()
    # Create new users and add them to guild
    for user in users:
        if not user.bot:
            # Check if user already exists for guild
            if sum(str(x.user_id) == str(user.id) for x in guild.users) is 0:
                new_user = User(user.name, user.id)
                guild.users.append(new_user)
                session.add(new_user)
    session.commit()
    session.close()
Example #8
0
def get_callback():
    '''Callback from github.api.'''
    current_sess = db_sess.create_session()
    github = OAuth2Session(client_id, state=session['oauth_state'])
    token = github.fetch_token(token_url,
                               client_secret=client_secret,
                               authorization_response=request.url)
    session['oauth_token'] = token
    github = OAuth2Session(client_id, token=session['oauth_token'])
    github_json = github.get('https://api.github.com/user').json()
    nickname = github_json['login']
    session['nickname'] = nickname.lower()
    user = current_sess.query(User).filter(
        User.nickname == nickname.lower()).first()
    if user:
        user.image = github_json['avatar_url']
        user.name = github_json['name'] if github_json['name'] else 'Unknown'
        bio = github_json['bio'] if github_json['bio'] else 'Unknown'
        user.description = f"name: {user.name}\nbio: {bio}"
        user.github = github_json['url']
        current_sess.merge(user)
        current_sess.commit()
        return redirect(url_for(session.get('redirect', '.profile')))
    else:
        image = github_json['avatar_url']
        name = github_json['name'] if github_json['name'] else 'Unknown'
        bio = github_json['bio'] if github_json['bio'] else 'Unknown'
        description = f"name: {name}\nbio: {bio}"
        github = github_json['url']
        user = User(nickname=nickname.lower(),
                    icon=image,
                    description=description,
                    github=github)
        current_sess.add(user)
        current_sess.commit()
    return redirect(url_for(session.get('redirect', '.profile')))
Example #9
0
def get_users():
    users = User.objects().to_json()
    return Response(users, mimetype="application/json", status=200)
Example #10
0
    def userSignup(payload):
        if payload:
            password = '******'
            # password = str(uuid.uuid4())[:10] # generates a random string to act as a system generated password
            u_ublic_id = str(uuid.uuid4())[:15]
            print("password", password)
            new_user = User(
                public_id=u_ublic_id,
                first_name=payload['first_name'],
                last_name=payload['last_name'],
                email=payload['email'],
                phone_number=payload['phone_number'],
                description=payload['description'],
                address=payload['address'],
                company_name=payload['company_name'],
                type_id=payload['type_id'],
                category_id=payload['category_id'],
                password=bcrypt.generate_password_hash(
                    password, app.config['BCRYPT_LOG_ROUNDS']).decode('utf-8'),
                created_at=datetime.now())
            User.save_to_db(new_user)

            #generate and auth token
            payload = {
                'exp': datetime.utcnow() + timedelta(days=1, seconds=5),
                'iat': datetime.utcnow(),
                'sub': u_ublic_id
            }
            auth_token = jwt.encode(payload,
                                    app.config['SECRET_KEY'],
                                    algorithm='HS256')
            token = Token(public_id=str(uuid.uuid4())[:8],
                          token=auth_token.decode('utf-8'),
                          user_public_id=u_ublic_id,
                          client_id=1,
                          scopes='[]',
                          created_at=datetime.now())
            Token.save_to_db(token)

            mail_payload = {
                'name':
                '{} {}'.format(payload['first_name'], payload['last_name']),
                'confirm_account_url':
                (app.config['CONFIRM_ACCOUNT_URL']).format(u_ublic_id),
                'link_url':
                (app.config['CONFIRM_ACCOUNT_URL']).format(u_ublic_id),
                'product_name':
                app.config['APP_NAME'],
                'company_name':
                app.config['COMPANY_NAME']
            }

            # Send an Email
            sg = sendgrid.SendGridAPIClient(
                apikey=app.config['SENDGRID_API_KEY'])
            from_email = Email(app.config['MAIL_ADDRESS'])
            to_email = Email(payload['email'])
            subject = "Welcome to {}".format(app.config['APP_NAME'])
            content = Content(
                "text/html", render_template('signup.html', data=mail_payload))
            mail = Mail(from_email, subject, to_email, content)

            try:
                response = sg.client.mail.send.post(request_body=mail.get())

                return jsonify({
                    'message':
                    'Welcome to {}, check your mail for your account details'.
                    format(app.config['APP_NAME'])
                }), 200
            except Exception as e:
                return jsonify({"message": str(e)}), 422