User system expanded
This commit is contained in:
parent
0ff1db6fb4
commit
63618245e2
|
@ -17,8 +17,13 @@ app.use(express.json());
|
||||||
app.use(express.urlencoded({ extended: true }));
|
app.use(express.urlencoded({ extended: true }));
|
||||||
app.use(session({
|
app.use(session({
|
||||||
resave: true,
|
resave: true,
|
||||||
saveUninitialized: true,
|
saveUninitialized: false,
|
||||||
secret: 'ASURASECRET'
|
secret: process.env.COOKIE_SECRET,
|
||||||
|
rolling: true,
|
||||||
|
cookie: {
|
||||||
|
secure: process.env.COOKIE_SECURE,
|
||||||
|
maxAge: 60 * 60 * 1000 // 1 hour (in milliseconds)
|
||||||
|
}
|
||||||
}));
|
}));
|
||||||
let api = express.Router();
|
let api = express.Router();
|
||||||
app.use("/api", api);
|
app.use("/api", api);
|
||||||
|
@ -76,19 +81,43 @@ passport.use(new GoogleStrategy({
|
||||||
));
|
));
|
||||||
|
|
||||||
app.get('/auth/google',
|
app.get('/auth/google',
|
||||||
passport.authenticate('google', { scope : ['profile', 'email'] }));
|
passport.authenticate('google', { scope : ['profile', 'email']
|
||||||
|
}));
|
||||||
|
|
||||||
app.get('/auth/google/callback',
|
app.get('/auth/google/callback',
|
||||||
passport.authenticate('google', { failureRedirect: '/error' }),
|
passport.authenticate('google', { failureRedirect: '/error' }),
|
||||||
async function(req, res) {
|
async function(req, res) {
|
||||||
// Get user profile from passport
|
// Get user profile from passport
|
||||||
let user = {
|
let user = {
|
||||||
id: req.user.id,
|
googleId: req.user.id,
|
||||||
|
asuraId: null,
|
||||||
name: req.user.displayName,
|
name: req.user.displayName,
|
||||||
email: req.user.emails[0].value
|
email: req.user.emails[0].value,
|
||||||
|
imgurl: req.user.photos[0].value
|
||||||
}
|
}
|
||||||
req.session.user = user;
|
|
||||||
res.json(user);
|
// Check if user exists in database
|
||||||
|
tmdb.getUserByEmail(user.email)
|
||||||
|
.then(dbUser => {
|
||||||
|
user.asuraId = dbUser.id;
|
||||||
|
if (!dbUser.googleId) {
|
||||||
|
// User is "preregistered" with email only, so complete the registration
|
||||||
|
user.isManager = false;
|
||||||
|
tmdb.editUser(user.email, user)
|
||||||
|
.then(() => { user.asuraId = dbUser.id})
|
||||||
|
.catch(err => console.log(err));
|
||||||
|
} else {
|
||||||
|
user = dbUser;
|
||||||
|
}
|
||||||
|
|
||||||
|
req.session.user = user;
|
||||||
|
res.json({"status": "OK", "data": user});
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
// User is neither registered nor preregistered
|
||||||
|
res.json({"status": "error", message: "Email is not in administrator list."});
|
||||||
|
return
|
||||||
|
});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -369,6 +398,17 @@ api.get("/users/getSessionUser", (req, res) => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
api.get("/users/getSavedUser", (req, res) => {
|
||||||
|
if (!req.session.user) {
|
||||||
|
res.json({"status": "error", "data": "No user logged in"});
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let googleId = req.session.user.googleId;
|
||||||
|
tmdb.getUserByGoogleId(googleId)
|
||||||
|
.then(user => res.json({"status": "OK", "data": user}))
|
||||||
|
.catch(err => res.json({"status": "error", "data": err}));
|
||||||
|
});
|
||||||
|
|
||||||
api.get("/users/getUsers", (req, res) => {
|
api.get("/users/getUsers", (req, res) => {
|
||||||
tmdb.getUsers()
|
tmdb.getUsers()
|
||||||
.then(users => res.json({"status": "OK", "data": users}))
|
.then(users => res.json({"status": "OK", "data": users}))
|
||||||
|
@ -403,4 +443,11 @@ api.post("/users/edit", (req, res) => {
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
api.get("/dumpsession", (req, res) => {
|
||||||
|
let out = {};
|
||||||
|
out.session = req.session;
|
||||||
|
out.header = req.headers;
|
||||||
|
res.json(out);
|
||||||
|
});
|
||||||
// #endregion
|
// #endregion
|
|
@ -40,7 +40,7 @@ CREATE TABLE matches (
|
||||||
|
|
||||||
CREATE TABLE users (
|
CREATE TABLE users (
|
||||||
id INTEGER PRIMARY KEY AUTO_INCREMENT,
|
id INTEGER PRIMARY KEY AUTO_INCREMENT,
|
||||||
googleId INTEGER,
|
googleId TEXT,
|
||||||
name TEXT,
|
name TEXT,
|
||||||
email TEXT NOT NULL,
|
email TEXT NOT NULL,
|
||||||
isManager BOOLEAN NOT NULL
|
isManager BOOLEAN NOT NULL
|
||||||
|
|
|
@ -17,6 +17,7 @@ module.exports = {
|
||||||
getTeamsByTournamentId: getTeamsByTournamentId,
|
getTeamsByTournamentId: getTeamsByTournamentId,
|
||||||
getUsers: getUsers,
|
getUsers: getUsers,
|
||||||
getUserByEmail: getUserByEmail,
|
getUserByEmail: getUserByEmail,
|
||||||
|
getUserByGoogleId: getUserByGoogleId,
|
||||||
createUserBlank: createUserBlank,
|
createUserBlank: createUserBlank,
|
||||||
editUser: editUser,
|
editUser: editUser,
|
||||||
}
|
}
|
||||||
|
@ -496,7 +497,7 @@ function createUserBlank(email) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Create a user, with only an email address
|
// Create a user, with only an email address
|
||||||
connection.query("INSERT INTO users (email, isManager) VALUES (?), FALSE", [escapeString(email)], (err, sets) => {
|
connection.query("INSERT INTO users (email, isManager) VALUES (?, FALSE)", [escapeString(email)], (err, sets) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
reject(err);
|
reject(err);
|
||||||
|
|
Loading…
Reference in New Issue