Ejemplo n.º 1
0
def signup():
    json_data = get_json_data()
    username = json_data.get("username")
    password = json_data.get("password")
    email = json_data.get("email")
    if '@' not in parseaddr(email)[1]:
        return jsonify({"error": "Invalid email address: "+str(email)}), 400
    if len(password) < 8:
        return jsonify({"error": "Invalid password: must be 8 characters or more"}), 400
    if len(username) < 1:
        return jsonify({"error": "Invalid username: cannot use an empty username"}), 400
    first_name = json_data.get("firstname")
    last_name = json_data.get("lastname")

    dbw = DatabaseWrapper(GITOLITE_ADMIN_PATH, DATABASE_PORT)
    try:
        dbw.create_user(username, email, password, first_name, last_name)
    except UsernameAlreadyTakenError as e:
        return jsonify({"error": "Username is already taken!", "exception": str(e)}), 400
    except EmailAlreadyTakenError as e:
        return jsonify({"error": "Email is already taken!", "exception": str(e)}), 400
    result = dbw.login(username, password)
    return jsonify({"token": result}), 200
    # give the users some pkeys
    bogus_key = create_bogus_key()
    gw.add_pkey_to_user("student1", bogus_key["pubkey_contents"])
    bogus_key2 = create_bogus_key()
    gw.add_pkey_to_user("student2", bogus_key2["pubkey_contents"])
    bogus_key3 = create_bogus_key()
    gw.add_pkey_to_user("teacher1", bogus_key3["pubkey_contents"])
    bogus_key4 = create_bogus_key()
    gw.add_pkey_to_user("teacher2", bogus_key4["pubkey_contents"])
    bogus_key4 = create_bogus_key()
    gw.add_pkey_to_user("spencer", bogus_key4["pubkey_contents"])
    gw.add_pkey_to_user("teacher_usable", test_key)
    gw.add_pkey_to_user("student_usable", test_key2)

    # populate the databases with some data
    dbw.create_user("student1", "*****@*****.**", password, "Student", "One")
    dbw.create_user("student2", "*****@*****.**", password, "Student", "Two")
    dbw.create_user("teacher1", "*****@*****.**", password, "Teacher", "One")
    dbw.create_user("teacher2", "*****@*****.**", password, "Teacher", "Two")
    dbw.create_user("teacher_usable", "*****@*****.**", password, "Teacher", "Usable")
    dbw.create_user("student_usable", "*****@*****.**", password, "Student", "Usable")
    dbw.create_user("spencer", "*****@*****.**", password, "Spencer", "Hawkins")  # because of some hardcoded stuff, heh
    dbw.create_user("konrad", "*****@*****.**", password, "Konrad", "Ryce")  # because of some hardcoded stuff, heh

    dbw.create_class("intro_to_computers", "Introduction to Computers", "Introduction to Computers description", "teacher1")
    dbw.create_class("adv_computers", "Advanced Computers", "Advanced Computers description", "teacher2")
    dbw.create_class("test_class", "a test class usable for actual git tests", "description", "teacher_usable")

    dbw.add_student_to_class("intro_to_computers", "student1")
    dbw.add_student_to_class("adv_computers", "student2")
    dbw.add_student_to_class("test_class", "student_usable")