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.")
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.")
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)