Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- app.post('/api/register', function(req, res) {
- console.log("Registering...");
- // Helper function: Returns "" if the username is valid, an error message
- // otherwise.
- var validateUsername = function(username) {
- username = username.trim();
- if (!username) {
- return "Username: A username is required.";
- }
- if (username.length < 5) {
- return "Username: Username must be at least 5 characters long.";
- }
- if (!/^[a-zA-Z0-9]+$/i.test(username)) {
- return "Username: Username must be alphanumeric.";
- }
- //Username check will happen separately, since it involves a callback.
- return "";
- }
- // Similarly, returns an error string if there's a problem, otherwise
- // returns ""
- var validatePassword = function(password) {
- if (password == null)
- return "Password: A Password is required.";
- if (password.length < 10)
- return "Password: Password must be at least 10 characters long.";
- return "";
- }
- var validateName = function(name) {
- if (name == null) {
- return "Name: Names are required.";
- }
- if (!/^[a-zA-Z]+$/.test(name)) {
- return "Name: Name is not alphabetical.";
- }
- return "";
- }
- var validateDigits = function(uid, digitCount) {
- if (uid == null) {
- return "";
- }
- if (uid.length != digitCount) {
- return "UID or Phone Number: Incorrect digit count.";
- }
- if (!/^[0-9]+$/.test(uid)) {
- return "UID or Phone Number: Not Digit String";
- }
- return "";
- }
- var validateGradYear = function(gradYear) {
- if (gradYear == null) {
- return "";
- }
- if (parseInt(gradYear) == NaN || parseInt(gradYear) < 0) {
- return "GradYear: Not a valid input."
- }
- return "";
- }
- var validateEmail = function(email) {
- if (email == null) {
- return "Email: Email is required.";
- }
- var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
- if (!re.test(email)) {
- return "Email: Email is invalid.";
- }
- return "";
- }
- var validateInterests = function(interests) {
- var validInterests = ["dota2", "smash4", "melee", "csgo", "league", "overwatch", "hearthstone"];
- for (var i = 0; i < interests.length; i++) {
- if (!validInterests.includes(interests[i])) {
- return "Interests: Invalid interest.";
- }
- return "";
- }
- }
- var errorValidate = function(error) {
- if (error != "") {
- res.send({ error: error });
- }
- return;
- }
- var username = req.body.username.trim();
- errorValidate(validateUsername(username));
- var usernameLower = username.toLowerCase();
- var password = req.body.password;
- errorValidate(validatePassword(password));
- var firstName = req.body.firstName.trim();
- errorValidate(validateName(firstName));
- var lastName = req.body.lastName.trim();
- errorValidate(validateName(lastName));
- var uid = req.body.uid;
- errorValidate(validateDigits(uid, 9));
- var gradYear = req.body.gradYear;
- errorValidate(validateGradYear(gradYear));
- var phoneNumber = req.body.phoneNumber;
- errorValidate(validateDigits(phoneNumber, 10));
- var email = req.body.email;
- errorValidate(validateEmail(email));
- var interests = req.body.interests;
- errorValidate(validateInterests(interests));
- console.log("Input valid...");
- User.findOne({ usernameLower: usernameLower }, function(err, user) {
- if (err) {
- console.log(err);
- return res.send({ error: err });
- }
- if (user != null) {
- console.log(user);
- // Username exists, block it
- return res.send({ error: "Username: Username is already taken." });
- }
- else {
- console.log("Registration okay to go, starting");
- // Add the account.
- var user = new User({
- // console.log({
- username: username,
- usernameLower: usernameLower,
- permissions: "user",
- firstName: firstName,
- lastName: lastName,
- email: email,
- gradYear: gradYear,
- UID: uid,
- phoneNumber: phoneNumber,
- interests: interests
- });
- user.password = user.generateHash(password);
- user.save();
- // setLogin(res, username, password);
- res.cookie('username', username, { signed: true });
- res.cookie('password', auth.encrypt(password), { signed: true });
- console.log("Done with cookie");
- res.send({ status: "done" });
- console.log("Super done");
- }
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement