コード例 #1
0
def app():
    "Initialize the app in test mode, initialises the DB, and adds some test cases"
    app = create_app('test')
    with app.test_request_context():
        db.create_all()
        # create a user
        user = User('default', '*****@*****.**', 'password')
        db.session.add(user)
        db.session.flush()
        # create a new group
        test_group = Group('TestGroup', user)
        db.session.add(test_group)
        db.session.flush()
        # add an issue to the group
        issue = Issue('REF', 'Description', test_group.id)
        db.session.add(issue)
        # Make the user a member of the group
        membership = Membership(test_group, user)
        db.session.add(membership)
        existing_group = Group('GroupAlreadyExists', user)
        db.session.add(existing_group)
        # Second user
        user = User('bob', '*****@*****.**', 'password')
        db.session.add(user)
        db.session.commit()
    return app
コード例 #2
0
def init_db():
    # import all modules here that might define models so that
    # they will be registered properly on the metadata.  Otherwise
    # you will have to import them first before calling init_db()

    import database.models

    if get_config()['mode'] == 'dev':
        Base.metadata.drop_all(bind=engine)

    Base.metadata.create_all(bind=engine)

    from database.models import User
    admin = User(
        civilite='M',
        firstName='admin',
        lastName='nimda',
        birthDate='2019-01-01',
        phone='0658062948',
        email='*****@*****.**',
        pwd='jdida',
        plastaId='a111111',
        surveyId='40340304',
        verified=True,
        blocked=False,
        fixedOldJobValue=False,
        fixedAlphaBeta=False,
        group='J4UINT_C1NE')
    other = User(
        civilite='M',
        firstName='other',
        lastName='nimda',
        birthDate='2019-01-01',
        phone='0658062947',
        email='*****@*****.**',
        pwd='jdida',
        plastaId='009',
        surveyId='40340304',
        verified=True,
        blocked=False,
        group='CGTINT_C1NE')
    ather = User(
        civilite='M',
        firstName='ather',
        lastName='nimda',
        birthDate='2019-01-01',
        phone='0658062949',
        email='*****@*****.**',
        pwd='jdida',
        plastaId='003',
        surveyId='9021988',
        verified=True,
        group='ather-ather')
    try:
        db_session.add_all([admin, other, ather])
        db_session.commit()
        print(User.query.all())
    except:
        print('Fake users already populated')
コード例 #3
0
def userTestData():
    newUser = User(id = 1, email = "*****@*****.**", username = "******", password = "******", company_name = "Fence", active = True)
    newUser1 = User(id = 2, email = "*****@*****.**", username = "******", password = "******", company_name = "Builder", active = True)
    newUser2 = User(id = 3, email = "*****@*****.**", username = "******", password = "******", company_name = "Fence", active = False)
    newUser3 = User(id = 4, email = "*****@*****.**", username = "******", password = "******", company_name = "Builder", active = False)
    dbSession.add(newUser)
    dbSession.add(newUser1)
    dbSession.add(newUser2)
    dbSession.add(newUser3)
    dbSession.commit()
コード例 #4
0
def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.create_table('user', sa.Column('id', sa.Integer(), nullable=False),
                    sa.Column('nickname', sa.String(length=32), nullable=True),
                    sa.PrimaryKeyConstraint('id'))
    default = User('default')
    db.session.add(default)
    db.session.commit()
    # query to load id
    default = User.query.first()
    default_id = default.id

    # Not strictly necessary as I am going to rename the table.
    op.rename_table('group', 'old_group')

    op.create_table('estimation_group',
                    sa.Column('id', sa.Integer(), nullable=False),
                    sa.Column('name', sa.String(length=32), nullable=True),
                    sa.Column('user', sa.Integer(), nullable=False),
                    sa.ForeignKeyConstraint(
                        ['user'],
                        ['user.id'],
                    ), sa.PrimaryKeyConstraint('id'))
    op.execute(
        'INSERT INTO estimation_group (name,user) SELECT name, {} FROM old_group'
        .format(default_id))

    op.drop_table('old_group')
コード例 #5
0
def signup():
    try:
        body = request.get_json()
        user = User(**body)

        if len(user.password) < 8:
            response = make_response({
                "status":
                "fail",
                "message":
                "password must be atleast 8 characters long"
            })
            return response

        user.hash_password()
        user.save()
        return {"status": "success", "user": user}, 200

    except ValidationError:
        response = make_response({
            "status": "fail",
            "message": "This is not a valid phone number"
        })
        return response, 400

    except NotUniqueError:
        response = make_response({
            "status": "fail",
            "message": "Account already exists!"
        })
        return response, 409
コード例 #6
0
    def post(self):
        form = LoginForm(request.form)
        if form.validate():
            username = request.form.get('username')
            password = request.form.get('password')

            try:
                User.try_login(username, password)
            except Exception as e:
                flash('Invalid username or password. Please try again.',
                      'danger')
                return render_template('login.html', form=form)

            user = User.query.filter_by(username=username).first()
            if not user:
                user = User(username, password)
                db.session.add(user)
                db.session.commit()
            login_user(user)
            flash('You have successfully logged in.', 'success')
            return redirect(url_for('auth.home'))

        if form.errors:
            flash(form.errors, 'danger')

        return render_template('login.html', form=form)
コード例 #7
0
def sign_up():
    username = request.form['username']
    password = request.form['password']
    new_session = session_maker()
    error = None

    if not (username or password):
        error = "You need to fill all of required fields."
    if get_or_none(new_session, User, username) is not None:
        error = f"User with a name '{username}' already exists."
    else:
        new_user = User(username=username, password_hash=generate_password_hash(password))
        try:
            new_session.add(new_user)
            new_session.commit()
        except:
            new_session.rollback()
            error = "Sorry, an error occurred during the transaction of user's information to the database. " \
                    "Please, try again."
        finally:
            new_session.close()
        return redirect(url_for('api.sign_in'))

    flash(error)
    return render_template('sign_up.html')
コード例 #8
0
def create_user(organization_id: str) -> Any:
    form = UserForm(request.form)
    organization = Organization.query. \
        filter(Organization.id == organization_id).first()

    if request.method == 'POST' and form.validate():
        user = User()
        user.organization_id = organization.id
        form.populate_obj(user)
        user.active = True

        try:
            db.session.add(user)
            db.session.commit()
        except IntegrityError:
            db.session.rollback()
            form.email.errors.append('This email is already in use')
            return render_template('users/users/new.html',
                                   form=form,
                                   organization=organization)
        except:
            db.session.rollback()
            flash('Error saving user')
            return render_template('users/users/new.html',
                                   form=form,
                                   organization=organization)

        return redirect(
            url_for('organizations.organization',
                    organization_id=organization.id))

    return render_template('users/users/new.html',
                           form=form,
                           organization=organization)
コード例 #9
0
ファイル: user.py プロジェクト: roman-developer/movie-bag
def sign_up():
    body = request.get_json()
    user = User(**body).save()
    user.hash_password()
    user.save()
    id = user.id
    return {'id': str(id)}, 200
コード例 #10
0
def signup():
    """
    User sign-up page.
    GET requests serve sign-up page.
    POST requests validate form & user creation.
    """
    form = SignupForm()
    if form.validate_on_submit():
        existing_user = User.query.filter_by(email=form.email.data).first()
        if existing_user is None:
            user = User(name=form.name.data,
                        email=form.email.data,
                        phone_number=form.number.data)
            user.set_password(form.password.data)
            user.set_number(form.number.data)
            db.session.add(user)
            db.session.commit()  # Create new user
            login_user(user)  # Log in as newly created user
            return redirect(url_for('main_bp.dashboard'))
        flash('A user already exists with that email address.')
    return render_template('signup.jinja2',
                           title='Create an Account.',
                           form=form,
                           template='signup-page',
                           body="Sign up for a user account.")
コード例 #11
0
async def signup(form_data: EmailPasswordForm, request: Request,
                 background_tasks: BackgroundTasks):
    try:
        try:
            user = User(email=form_data.username, password=form_data.password)
        except NotUniqueError:
            user = User.objects.get(email=form_data.username,
                                    verified=False,
                                    created__lt=datetime.now() -
                                    timedelta(days=1))
            user.password = form_data.password
        if User.objects.count() == 0:
            user.admin = True
        user.hash_password()
        user.save()
        verify_token = create_access_token(str(user.id),
                                           expires_delta=timedelta(days=1))
        send_email_backround(
            background_tasks, 'Verify Your Email', [user.email],
            'verify_email.html', {
                'url':
                f'{request.client.host}:{request.client.port}/login?t={verify_token}',
            })
        # FOR DEBUG PURPOSES
        # TODO: remove in production
        print(request.client.host + ':' + request.client.port + '/login?t=' +
              verify_token)
        return {'id': str(user.id)}
    except DoesNotExist:
        raise UserAlreadyExistsError().http_exception
    except Exception as e:
        raise e
コード例 #12
0
def add_user():
    body = request.get_json()
    user = User()
    user["first_name"] = body["first_name"]
    user["last_name"] = body["last_name"]
    user["role"] = body["role"]

    if body["role"] == "PARENT":
        if "street" in body:
            user["street"] = body["street"]
        if "state" in body:
            user["state"] = body["state"]
        if "city" in body:
            user["city"] = body["city"]
        if "zip" in body:
            user["zip"] = body["zip"]
        user.save()
        return jsonify(user), 201
    elif body["role"] == "CHILD":
        try:
            body["parent"]
            if body["parent"] == "":
                return {"error": "please enter parent id"}, 400
            try:
                User.objects.get(user_id=body["parent"])
                user["parent"] = body["parent"]
                user.save()
                return jsonify(user), 201
            except:
                return {"error": "please enter a registered parent id"}, 400
        except:
            return {"error": "please enter parent id"}, 400
コード例 #13
0
    def setUpClass(self):
        self.connection = connect(db='mongoenginetest',
                                  host='mongomock://localhost')
        self.user_id = '1088308123'

        user = User(user_id=self.user_id, pin='12345')
        user.save()
コード例 #14
0
def logon(request):
    # print(request.POST)
    if ('username' in request.POST) and ('email' in request.POST) and (
            'code' in request.POST) and ('password' in request.POST):
        username = request.POST['username']
        if not (User.objects.filter(username=username).exists()):
            email = request.POST['email']
            code = request.POST['code']
            password = request.POST['password']
            if str(gen_code(email)) == str(code):
                user = User()
                user.username = username
                user.password = make_password(password)
                user.email = email
                user.contact = "4008823823"
                user.identity = "normal"
                user.apply = "False"
                user.token = ""
                user.save()
                add_dialog('第{}用户{}完成注册,注册邮箱是{}'.format(
                    user.id, username, email))
                return JsonResponse({"state": 1})
            else:
                return JsonResponse({"state": "注册失败code is error"})
        return JsonResponse({"state": "注册失败username is exist"})
    return JsonResponse({"state": "注册失败变量不够"})
コード例 #15
0
 def post(self):
     body = request.get_json()
     user = User(**body)
     user.hash_password()
     user.save()
     id = user.id
     return {'id': str(id)}, 200
コード例 #16
0
	def post(self):
		try:
			body		= request.get_json()
			username	= body.get('username').title()
			email		= body.get('email')
			password	= body.get('password')
			if username is None or password is None or email is None:
				raise ValidationError
			if password != body.get('password2'):
				return {'password': '******'}, 400
			if User.objects(Q(username__iexact=username) or Q(email__iexact=email)).count() > 0:
				raise NotUniqueError
			user = User(username=username, password=password, email=email)
			user.hash_password()
			user.save()

			expires		= timedelta(days=7)
			access_token= create_access_token(identity=str(user.id), expires_delta=expires)
			return  {'type': 'success', 'success': 'Login succesfull.', 'username': user.username, 'token': 'Bearer ' + access_token}, 200
		except (FieldDoesNotExist, ValidationError, ValueError) as e:
			return SchemaValidationError, 400
		except NotUniqueError:
			return EmailAlreadyExistsError, 400
		except Exception as e:
			print(e)
			return InternalServerError, 500
コード例 #17
0
    def get_new_board(difficulty):
        try:
            payload = verify_decode_jwt(get_token_auth_header())

            # Check if the user (auth_id) already exists
            user = None
            user_info = payload["http://www.jordanhuus.com/user_info"]
            if User.query.filter(User.auth_id == payload["sub"]).count() > 0:
                user = User.query.filter(User.auth_id == payload["sub"]) \
                    .first()
            else:
                first_name = user_info["name"].split(" ")[0]
                last_name = first_name if len(user_info["name"].split(" ")) \
                    == 1 else user_info["name"].split(" ")[1]

                user = User(first_name, last_name, user_info["id"])
                user.add()

            # Store the newly created board
            board = SudokuBoard(difficulty, user)
            board.add()

        except KeyError as ke:
            abort(400, f"Request body is missing {ke} dictionary key.")
        except Exception:
            abort(500)

        return jsonify(board.format()), 200
コード例 #18
0
 def post(self):
     body = request.get_json()
     try:
         User.objects.get(email=body.get('email'))
     except DoesNotExist:
         user = User(**body)
         user.hash_password()
         try:
             user.save()
         except ValidationError as e:
             return {'error': str(e)}, 401
         else:
             expires = datetime.timedelta(days=1)
             access_token = create_access_token(identity=str(user.id),
                                                expires_delta=expires)
             now = datetime.datetime.utcnow()
             expires_epoch = (
                 (now + expires) -
                 datetime.datetime(1970, 1, 1)).total_seconds()
             return {
                 'token': access_token,
                 'token_expiry': expires_epoch,
                 'username': user.username,
                 'address': user.address
             }, 200
     else:
         return {'error': 'Email already exists'}, 409
コード例 #19
0
ファイル: auth.py プロジェクト: profaddy/employee-management
 def post(self):
     body = request.get_json();
     user = User(**body);
     user.hash_password();
     user.save();
     id = user.id
     return {"status":"true",'id': str(id)}, 200
コード例 #20
0
ファイル: auth.py プロジェクト: nadinetruter/test-heroku
 def post(self):
     url = request.host_url + 'verify/'
     try:
         body = request.get_json()
         user = User(**body)
         user.hash_password()
         user.save()
         id = user.id
         #return {'id': str(id)}, 200
         expires = datetime.timedelta(hours=24)
         access_token = create_access_token(str(id), expires_delta=expires)
         return send_email(
             'Login verification',
             sender='*****@*****.**',
             recipients=[user.email],
             text_body=render_template('auth/login_email.txt',
                                       url=url + access_token),
             html_body=render_template('auth/login_email.html',
                                       url=url + access_token))
     except FieldDoesNotExist:
         raise SchemaValidationError
     except NotUniqueError:
         raise EmailAlreadyExistsError
     except Exception as e:
         raise InternalServerError
コード例 #21
0
ファイル: user.py プロジェクト: fossabot/sdust-acmer
def create_user(username, password, identity_word='normal'):
    """
    创建用户。
    :param username: 用户名
    :param password: 密码
    :param identity_word: 身份
    :return: 操作结果
    """
    if User.objects.filter(username=username).exists():
        return operation_failed(InfoType.Exists, InfoField.User)
    if identity_word not in UserIdentity.IDENTITY_VALUE:
        return operation_failed(InfoType.NotExists, InfoField.IdentityWord)

    for letter in username:
        if not (letter.isalpha() or letter.isdigit() or letter == '_'):
            return operation_failed(InfoType.Invalid, InfoField.Username)

    user = User(username=username)
    user.set_password(password)
    user.save()

    profile = UserProfile(user=user)
    profile.username = username
    profile.register_time = int(time.time())
    profile.save()

    identity = UserIdentity(user=user)
    identity.level = UserIdentity.IDENTITY_VALUE[identity_word]
    identity.save()

    return operation_succeeded()
コード例 #22
0
ファイル: functionsUsers.py プロジェクト: levirre/jormungand
def new_user(name, password):
    uname = User.query.filter_by(username=name).first()
    if uname == None:
        db_session.add(User(username=name, hash=password))
        commit_session()
        #db_session.remove()
        #engine.dispose()
        return True
コード例 #23
0
 def post(self):
     body = request.get_json()
     # TODO: return error if username not unique
     user = User(**body)
     user.hash_password()
     user.save()
     id = user.id
     return {'id': str(id), 'username': user.username, 'groups': user.groups, 'contacts': user.contacts, 'error':''}, 200
コード例 #24
0
    def post(self):
        body = request.get_json()
        user = User(**body)
        user.save()
        user.add_ca()

        send_email_async(user.email, 'signup', user.first_name, pin=user.verification_pin)
        return {'id': str(user.id)}, 200
コード例 #25
0
ファイル: server.py プロジェクト: Jobs-4-You/J4U-Server
def signup():
    form = request.json
    new_user = User(
        civilite=form["civilite"],
        firstName=form["firstName"],
        lastName=form["lastName"],
        birthDate=form["birthDate"],
        email=form["email"],
        phone=form["phone"],
        plastaId=form["plastaId"],
        pwd=form["password"],
        group=form["group"],
    )
    try:
        db_session.add(new_user)
        db_session.commit()
    except sqlalchemy.exc.IntegrityError as err:
        duplicated_key = err.orig.msg.split("'")[-2]
        return (
            jsonify(
                {
                    "msg": "{} est déja utilisée. Si vous avez déja un compte et oublié votre mot de passe, cliquer sur 'Renvoi du mot de passe' sur la page de login".format(
                        duplicated_key
                    )
                }
            ),
            422,
        )

    # Send a verification mail
    url_conf = generate_confirmation_token(form["email"])
    msg = Message(
        "Validation de votre inscription à J4U",
        sender="*****@*****.**",
        recipients=[form["email"]],
    )
    msg.html = """
                <p>
                Bonjour,
                </p>
                <p>
                Nous vous remercions pour votre participation au projet « Job For You » (J4U).
                </p>
                <p>
                Suite à votre inscription, voici un email de confirmation. Afin de valider votre compte, il vous suffit de cliquer sur le lien suivant (qui n’est actif que quelques jours) :
                </p>
                <p>
                <a href="{}">Cliquez ici pour confirmer votre adresse email</a>
                </p>
                <p>
                L’équipe J4U
                </p>
                """.format(
        url_conf
    )
    mail.send(msg)
    res = jsonify(success=True)
    return res
コード例 #26
0
    def setUp(self):
        self.organization = Organization(name="test_org")
        db.session.add(self.organization)
        db.session.commit()

        self.user = User(email=u"*****@*****.**")
        self.user.organization_id = self.organization.id
        db.session.add(self.user)
        db.session.commit()
コード例 #27
0
    def post(self):
        body = request.get_json()
        user = User(**body)
        try:
            user.save()
        except NotUniqueError:
            raise EmailAlreadyExist

        return user_schema.dump(user, many=False).data, 201
コード例 #28
0
 def create_user(cls, user_dto: UserDTO) -> None:
     with db_session() as session:
         user = User(
             id=user_dto.user_id,
             login=user_dto.login,
             first_name=user_dto.first_name,
             last_name=user_dto.last_name,
         )
         session.add(user)
コード例 #29
0
def register():
    form = request.form
    dbs = User(phone=form["phone"],
               fullname=form["name"],
               mailid=form["email"],
               password=form["psw"]).save()
    resp = jsonify({'message': 'data successful update'})
    resp.status_code = 200
    return resp
コード例 #30
0
def fblogin():
    """ Handles login requests through facebook login"""
    data = request.get_json()
    print "data from request is"
    print data
    message = {}
    message['message'] = "facebook login in received"

    email = data['email']
    print email
    user = helpers.user_by_email(email)
    print user

    if user:
        # create a JWT token to login

        token_data = {
            'iat': datetime.datetime.utcnow(),
            'exp': datetime.datetime.utcnow() + datetime.timedelta(days=30),
            'username': user.username,
            'userId': user.id,
            'isLoggedIn': True,
        }
        auth_token = jwt.encode(token_data,
                                constants.SECRET_KEY,
                                algorithm='HS256')
        # create a JSON message with JWT and send it to client
        message['auth_token'] = auth_token
        message['success'] = True
        print message
        return jsonify(message), 200

    if not user:
        # create a new User instance from the facebook login credentails, then a JWT login.
        username = data['name']
        new_user = User(username=username, email=email)
        db_session.add(new_user)
        db_session.commit()
        user_with_id = db_session.refresh(new_user)
        message['user'] = user_with_id

        token_data = {
            'iat': datetime.datetime.utcnow(),
            'exp': datetime.datetime.utcnow() + datetime.timedelta(days=30),
            'username': user_with_id.username,
            'userId': user_with_id.id,
            'isLoggedIn': True,
        }
        auth_token = jwt.encode(token_data,
                                constants.SECRET_KEY,
                                algorithm='HS256')

        message['auth_token'] = auth_token
        message['success'] = True
        print message
        return jsonify(message), 200