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