Beispiel #1
0
def signin():
    try:
        data = request.get_json()
        username = data["username"]
        password = data["password"]
        query = loginQuery(username)
        user = schema.execute(query, context_value={"accessLevel": 4})
        user = user.data.get("user")
        if user and len(user) != 1:
            return bad_request("Incorrect username or password.")
        user = user[0]
        if User.checkPassword(user.get("password", None), password):
            expires = timedelta(days=365)
            accessToken = create_access_token(identity=user,
                                              expires_delta=expires)
            return jsonify({
                "token":
                accessToken,
                "username":
                user.get("username"),
                "userId":
                str(user.get("Id")),
                "avatarUrl":
                user.get("avatar"),
                "userType":
                user.get("accessLevel"),
                "fullname":
                user.get("firstname") + " " + user.get("lastname"),
                "accessLevel":
                user.get("accessLevel")
            })
    except KeyError:
        return bad_request("Wrong arguments.")
    return bad_request(
        "There is an internal server error. Please contact the IT support.")
Beispiel #2
0
def duplicate_user():
    try:
        data = request.get_json()
        username = data["username"]

        user = schema.execute(loginQuery(username))
        if len(user.data.get("user")) != 0:
            return jsonify({"duplicate": True})

        return jsonify({"duplicate": False})
    except KeyError:
        return bad_request("Wrong arguments.")
    return bad_request(
        "There is an internal server error. Please contact the IT support.")
Beispiel #3
0
def register():
    try:
        data = request.get_json()
        username = data["username"]
        password = data["password"]
        password1 = data["password1"]
        firstname = data["firstname"]
        lastname = data["lastname"]
        email = data["email"]
        accessLevel = data["accessLevel"]
        dob = data["dob"]
        gender = data["gender"]
        data["phone"] = data["prefix"] + data["phone"]

        if accessLevel not in ["1", "2", 1, 2]:
            return bad_request("Type is not correct.")

        if (password != password1 or len(password) < 8 or not firstname
                or not lastname or not email or not username):
            return bad_request("Please check in with all the fields.")

        user = schema.execute(loginQuery(username))
        if len(user.data.get("user")) != 0:
            return bad_request("User already exists.")

        u = User(**data)
        u.setPassword(data["password"])
        inserted_id = str(
            db.users.insert_one({
                "username": u.username,
                "password": u.password,
                "firstname": u.firstname,
                "lastname": u.lastname,
                "email": u.email,
                "accessLevel": u.accessLevel,
                "avatar": u.avatar,
                "gender": data["gender"],
                "dob": u.dob,
                "studentClassroom": [],
                "activities": [],
                "phone": data["phone"],
            }).inserted_id)
        timestamp = datetime.utcnow()
        inserted_id = str(
            db.chatrooms.insert_one({
                "users": [inserted_id],
                "timestamp": timestamp,
                "name": "Team @ School"
            }).inserted_id)
        avatar_digest = md5(
            "*****@*****.**".lower().encode('utf-8')).hexdigest()
        db.messages.insert_one({
            "messageContent":
            "Hello, welcome to @ School!",
            "chatroomId":
            inserted_id,
            "senderId":
            "",
            "timestamp":
            timestamp,
            "senderAvatar":
            'https://www.gravatar.com/avatar/{}?d=identicon&s={}'.format(
                avatar_digest, 512)
        })

        return jsonify({})

    except KeyError:
        return bad_request("Wrong arguments.")
    return bad_request(
        "There is an internal server error. Please contact the IT support.")
def execute_query(query_string):
    result = schema.execute(query_string)
    click.echo(result.data)