Exemple #1
0
def register_user():
    username = request.form.get('username')
    email = request.form.get('email')
    password = request.form.get('password')
    avatar = request.files['avatar']

    hashed_password = bcrypt.hashpw(
        str(password).encode('utf-8'), bcrypt.gensalt())

    user = User(username=username, email=email, password=hashed_password)

    filename = secure_filename(avatar.filename)
    avatar.save(filename)

    s3_client.upload_file(Bucket='jwalls-fun-bucket',
                          Filename=filename,
                          Key=f'profile-pics/{filename}',
                          ExtraArgs={'ACL': 'public-read'})

    os.remove(filename)

    user.avatar_url = f'https://jwalls-fun-bucket.s3.amazonaws.com/profile-pics/{filename}'

    db.session.add(user)
    db.session.commit()

    user = db.session.query(User).filter_by(username=username).first()

    return {'user': user.to_dict()}
 def test_can_transform_list_of_models_into_list_of_obj(self):
     models = [
         User(
             username='******',
             password='******',
             role='admin',
             id=1,
             public_id='testpublicid',
         ),
         User(
             username='******',
             password='******',
             role='candidate',
             id=2,
             public_id='testpublicid2',
         )
     ]
     expected_obj = [{
         'public_id': 'testpublicid',
         'username': '******',
         'password': '******',
         'role': 'admin'
     }, {
         'public_id': 'testpublicid2',
         'username': '******',
         'password': '******',
         'role': 'candidate'
     }]
     actual = UserTransformer.models_to_obj(models)
     self.assertEqual(actual, expected_obj)
 def get(self, user: User, hostname):
     if hostname:
         magic_castle = user.get_magic_castle_by_hostname(hostname)
         return magic_castle.dump_configuration()
     else:
         if type(user) == AuthenticatedUser:
             return [{
                 **magic_castle.dump_configuration(planned_only=True),
                 "hostname":
                 magic_castle.get_hostname(),
                 "status":
                 magic_castle.get_status().value,
                 "freeipa_passwd":
                 magic_castle.get_freeipa_passwd(),
                 "owner":
                 magic_castle.get_owner_username(),
             } for magic_castle in user.get_all_magic_castles()]
         else:
             return [{
                 **magic_castle.dump_configuration(planned_only=True),
                 "hostname":
                 magic_castle.get_hostname(),
                 "status":
                 magic_castle.get_status().value,
                 "freeipa_passwd":
                 magic_castle.get_freeipa_passwd(),
             } for magic_castle in user.get_all_magic_castles()]
Exemple #4
0
def register_user():
    """
    Register a new user.
    """
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']

        try:
            User.register_user(username, password)
            # A session is a piece of data that is stored inside the app for each user different.
            session['username'] = username
            Log(username, 'Register.').save_to_mongo()
            flash('You have successfully registered.', 'success')
            return redirect(url_for('libors.index'))

        except errors.UserError as e:
            # Make the password strength error shorter.
            if e.message.startswith('A password must'):
                Log(username, 'Password strength error.').save_to_mongo()
            else:
                Log(username, e.message).save_to_mongo()
            flash(e.message, 'danger')
            return render_template('users/register.html')
    # If it's GET method, send user to the register page.
    return render_template('users/register.html')
Exemple #5
0
def register_user():
    if request.method == 'POST':
        email = request.form['email']
        password = request.form['password']

        try:
            User.register_user(email, password)
            session['email'] = email
            return email
        except UserErrors.UserError as e:
            return e.message
    return render_template('users/register.html')
 def post(self, user: User, hostname, apply=False):
     if apply:
         magic_castle = user.get_magic_castle_by_hostname(hostname)
         magic_castle.apply()
         return {}
     else:
         magic_castle = user.create_empty_magic_castle()
         json_data = request.get_json()
         if not json_data:
             raise InvalidUsageException("No json data was provided")
         magic_castle.set_configuration(json_data)
         magic_castle.plan_creation()
         return {}
Exemple #7
0
def login_user():
    if request.method == 'POST':
        email = request.form['email']
        password = request.form['password']

        try:
            User.is_login_valid(email, password)
            session['email'] = email
            return redirect(url_for('stores.index'))
        except UserErrors.UserError as e:
            return e.message

    return render_template('users/login.html')
Exemple #8
0
def register_user():
    if request.method == 'POST':
        email = request.form['email']
        password = request.form['password']

        try:
            User.register_user(email, password)
            session['email'] = email
            return redirect(url_for('alerts.index'))
        except UserErrors.UserError as e:
            flash(e.message, 'danger')
            return render_template('users/login.html')

    return render_template('users/register.html')
Exemple #9
0
        def decorated_function(*args, **kwargs):
            user = User.find_by_email(email=session['email'])
            if user.role not in roles:
                flash('You do not have permission to do that.', 'error')
                return redirect('/')

            return f(*args, **kwargs)
    def post(self):
        '''
        获取验证码
        :return:
        '''

        assert self.body.get('mobile'), u'手机号码错误'
        verify_type = int(self.body['type'] or 0)
        mobile = self.body.get('mobile')
        accout = User.find_one_by(User.mobile == mobile)

        # 注册
        if verify_type == 0:
            assert not accout, u'号码已注册,请直接登陆'
        # 忘记密码
        elif verify_type == 1:
            assert accout, u'手机号暂未注册,请先注册'

        try:
            user_id = accout.get('user_id')
        except:
            user_id = None

        result = UserCook.verification_init(mobile, type=verify_type, user_id=user_id)

        # 这里要发送短信
        code = result.pop('verify_code', None)
        print '这个是验证码:', code

        raise tornado.gen.Return(result)
Exemple #11
0
 def get_current_user(cls, username):
     name = None
     password = None
     email = None
     user_instance = None
     cur = db.connection.cursor()
     if username[0] == 'C':
         cur.execute(
             "SELECT user_name, password, email FROM Customer WHERE user_name='%s';"
             % username)
         user_instance = cur.fetchall()
         for val in user_instance:
             name = val[0]
             password = val[1]
             email = val[2]
     elif username[0] == 'M':
         cur.execute(
             "SELECT user_name, password FROM Manager WHERE user_name='%s';"
             % username)
         user_instance = cur.fetchall()
         for val in user_instance:
             name = val[0]
             password = val[1]
             email = None
     cur.close()
     new_user = User(name, password, email)
     if user_instance is None:
         return "Username does not exist"
     else:
         return new_user
Exemple #12
0
def add_user(request):
    try:
        user_data = json.loads(request.body.read())
    except Exception as e:
        logging.exception(
            'Error loading json data from request:\n{0}'.format(e))
        return HTTPResponse(
            status=HttpStatus.BAD_REQUEST,
            body='Request content type shall be an application/json')

    try:
        user = User(user_data)
    except (UserInsufficientData, UserInvalidDataType) as e:
        logging.exception('Invalid user data:\n{0}'.format(e))
        return HTTPResponse(status=HttpStatus.BAD_REQUEST, body=str(e))

    try:
        db = DataBase.get_instance()
        db.insert_user(user)
    except (DataBaseInstanceError, DuplicateUserError,
            DataBaseInsertionError) as e:
        logging.exception('Error storing user data:\n{0}'.format(e))
        return HTTPResponse(status=HttpStatus.INTERNAL_ERROR, body=str(e))

    logging.info('User was correctly created')
    return HTTPResponse(status=HttpStatus.CREATED)
def mail_verification():
    email = session['email']
    user = User.find_by_email(email=email)
    mail_verification = user.serialize_token()
    deliver_mail_verification_email(email=email,
                                    mail_verification=mail_verification)
    return redirect(url_for('home_page'))
def signup():
    form = RegistrationForm()

    if form.validate_on_submit():
        user = User(form.email.data, form.password.data, form.name.data,
                    form.company.data)
        try:
            user.register_user()
            session['email'] = user.email
            flash(
                'Sign up is complete, enjoy our services. \nAn E-mail address verification link has been sent to {0}.'
                .format(form.email.data), 'success')
            return redirect(url_for('users.mail_verification'))
        except UserErrors.UserAlreadyRegisteredError as e:
            flash(e.message, 'danger')
    return render_template('signup.html', form=form)
    def put(self, user: User, hostname):
        magic_castle = user.get_magic_castle_by_hostname(hostname)
        json_data = request.get_json()
        if not json_data:
            raise InvalidUsageException("No json data was provided")

        magic_castle.set_configuration(json_data)
        magic_castle.plan_modification()
        return {}
def password_reset():
    form = PasswordResetForm(reset_token=request.args.get('reset_token'))
    if form.validate_on_submit():
        user = User.deserialize_token(request.form.get('reset_token'))
        if user is None:
            flash('Your reset token has expired or was tampered with.',
                  'danger')
            return redirect(url_for('users.password_reset_trigger'))

        form.populate_obj(user)
        hashed_password = User(
            email='None', password=request.form.get('password')
        ).password  # hack to encrypt a password. by running init
        user.password = hashed_password
        user.update_user()

        flash('Your password has been reset.', 'success')
        return redirect(url_for('users.login_user'))

    return render_template('password_reset.html', form=form)
Exemple #17
0
 def get(self, user: User, hostname):
     try:
         magic_castle = user.get_magic_castle_by_hostname(hostname)
         status = magic_castle.get_status()
         progress = magic_castle.get_progress()
         if progress is None:
             return {"status": status.value}
         else:
             return {"status": status.value, "progress": progress}
     except InvalidUsageException as e:
         return {"status": ClusterStatusCode.NOT_FOUND.value}
Exemple #18
0
def login_user():
    session.permanent = True
    if request.method == 'POST':
        email = request.form['email']
        password = request.form['password']

        try:
            if User.is_login_valid(email, password):
                session['email'] = email
                return redirect(url_for('home.index'))
        except UserErrors.UserError as e:
            return render_template("users/login.html", message = e.message) 
    try:
        if  User.find_by_email(session['email']):
            return redirect(url_for('home.index'))
    except:
        pass


    return render_template("users/login.html")  # Send the user an error if their login was invalid
def create_user(current_user):
    if not current_user.is_admin():
        return jsonify({'message': 'Cannot perform that function!'})

    data = request.get_json()
    hashed_password = generate_password_hash(data['password'], method='sha256')
    new_user = User(public_id=str(uuid.uuid4()),
                    username=data['username'],
                    password=hashed_password,
                    role='candidate')
    db.session.add(new_user)
    db.session.commit()
    return jsonify({'message': 'New user created!'})
Exemple #20
0
def register_user():
    if request.method == 'POST':
        name = request.form['name']
        lastname = request.form['lastname']
        email = request.form['email']
        password = request.form['password']

        try:
            if User.register_user(name, lastname, email, password):
                session['email'] = email
                return redirect(url_for('home.index'))
        except UserErrors.UserError as e:
            return e.message
    
    try:
        if  User.find_by_email(session['email']):
            return redirect(url_for('home.index'))
    except:
        pass


    return render_template("users/register.html")  # Send the user an error if their login was invalid
Exemple #21
0
def create_user(user: NewUser,
                response: Response,
                db: Session = Depends(get_db),
                current_user: User = Depends(get_current_user)):
    """
    创建新用户
    """
    old_user = db.query(User).filter(User.username == user.username).first()
    if old_user:
        raise HTTPException(status_code=400, detail="要创建的用户已经存在!!!")
    user_dict = {
        "username": user.username,
        "email": user.email,
        "full_name": user.full_name,
        "is_active": user.is_active
    }
    new_user = User(**user_dict)
    new_user.convert_pass_to_hash(user.password)
    db.add(new_user)
    db.commit()
    response.status_code = status.HTTP_201_CREATED
    return UserBase(**user_dict)
Exemple #22
0
 def get_all_managers(cls, username, passcode):
     user_list = set()
     cur = db.connection.cursor()
     cur.execute(
         "SELECT user_name, password FROM Manager WHERE user_name='%s' AND password='******';"
         % (username, passcode))
     user_instance = cur.fetchall()
     for val in user_instance:
         user_name = val[0]
         password = val[1]
         user_list.add(User(user_name, password, None))
     cur.close()
     return user_list
Exemple #23
0
def login_user():
    if request.method == "POST":
        email = request.form["email"]
        password = request.form["password"]

        try:
            if User.is_login_valid(email, password):
                session["email"] = email
                return redirect(url_for('customer.find_customers'))
        except UserErrors.UserError as e:
            return e.message

    return render_template("users/login.html")
Exemple #24
0
def create_user():
    """
    Create new user.

    Args:
        username (request.json): The username of the new user.
        email (request.json): The email of the new user.
        password (request.json): The password of the new user.

    Returns:
        (dict): {
            'created': (bool) created,
            'user': {
                'id': (int) user id,
                'username': (str) user username,
                'email': (str) user email,
                'authenticated': (bool) user authenticated,
                'last_login': (datetime) user last login,
                'created_on': (datetime) user created on
            }
        }
    """

    # encode the password and hash
    password = str(request.get_json()['password']).encode('utf-8')
    hashed_password = bcrypt.hashpw(password, bcrypt.gensalt())

    user = User(
        username=request.get_json()['username'],
        password=hashed_password,
        email=request.get_json()['email']
    )

    db.session.add(user)
    db.session.commit()

    user = db.session.query(User).get(user.id)

    return {'user': user.to_dict()}
Exemple #25
0
def update_profile(user_id):
    if request.method == "POST":
        name = request.form['name']
        lastname = request.form['lastname']
        province = request.form['province']
        district = request.form['district']
        sub_district = request.form['sub_district']
        salary = request.form['salary']

        user = User.find_by_email(session['email'])
        user.name = name
        user.lastname = lastname
        user.province = province
        user.district = district
        user.sub_district = sub_district
        user.salary = salary

        user.save_to_mongo()

        return redirect(url_for('home.index'))


    return render_template('users/profile.html', user=User.find_by_email(session['email']))
Exemple #26
0
def add_candidate_data():
    user_candidate = User(username='******',
                          password=generate_password_hash('test',
                                                          method='sha256'),
                          role='candidate').save()

    candidate = Candidate(
        first_name='Martin',
        last_name='McGirk',
        user=user_candidate,
        location='NSW',
        pitch=
        "Hi, I'm a senior software developer currently working at a startup in the centre of Edinburgh, I'm super good at all things Salesforce, so let's see how I can help your business reach it's goals and get me paid!",
        user_id=user_candidate.id).save()
Exemple #27
0
def update_users():
    data = request.get_json()
    print(data)
    user = User.find_by_id(_id=data['_id'])
    user.name = data['name']
    user.email = data['email']
    user.company = data['company']
    user.role = data['role']
    user.image = data['image']
    user.update_user()

    response = {'status': True}

    return jsonify(response), 200
Exemple #28
0
def login():
    """Attempts to log a user in."""
    if request.method == 'POST':
        email = request.form['email']
        password = request.form['password']

        try:
            if User.validate_login(email, password):
                session['email'] = email
                return email
        except UserError as e:
            return e.message

    return render_template('users/login.html')
def mail_verified():
    form = MailVerifiedForm(
        mail_verification=request.args.get('mail_verification'))
    if form.validate_on_submit():
        user = User.deserialize_token(request.form.get('mail_verification'))
        if user is None:
            flash('Your mail verification has expired or was tampered with.',
                  'danger')
            return redirect(url_for('users.login_user'))
        user.email_valid = True
        user.update_user()
        flash('Your E-mail address has been verified', 'success')
        return redirect(url_for('users.login_user'))

    return render_template('mail_verification.html', form=form)
Exemple #30
0
def deliver_password_reset_email(email, reset_token):

    user = User.find_by_email(email=email)
    try:
        ctx = {'user': user, 'reset_token': reset_token}

        send_template_message(subject='REDFI Password reset',
                              recipients=[email],
                              template='mail/password_reset',
                              ctx=ctx)
    except Exception:
        raise UserErrors.InvalidEmailError(
            "Can't validate the email address provided. Make sure email is correct or try after sometime."
        )
    return None
Exemple #31
0
def deliver_mail_verification_email(email, mail_verification):

    user = User.find_by_email(email=email)
    try:
        ctx = {'user': user, 'mail_verification': mail_verification}

        send_template_message(subject='REDFI E-mail Verification',
                              recipients=[email],
                              template='mail/mail_verification',
                              ctx=ctx)
    except Exception:
        raise UserErrors.InvalidEmailError(
            "Can't validate the email address provided. Make sure email is correct or try after sometime."
        )
    return None