Finish implementing login

- Templated main page to show user and profile image
- Added logout
- Handle user rejecting Twitch authorization flow
This commit is contained in:
Dessa Simpson 2020-07-05 14:15:30 -07:00
parent df68c990fc
commit e8d7d6362b
5 changed files with 41 additions and 1 deletions

View file

@ -7,6 +7,7 @@ import express from "express";
import session from "express-session";
import pgSessionStore from "connect-pg-simple";
import fetch, { Response as FetchResponse } from "node-fetch";
import * as eta from "eta";
import db from "./db";
import errorHandler from "./errors";
@ -109,6 +110,7 @@ app.post("/api/deleteRequest", async (request, response) => {
// Twitch callback
app.get("/callback", async (request, response) => {
if (request.query.error) response.redirect(307, '/');
var authcode = request.query.code as string;
var tokenResponse = await fetch("https://id.twitch.tv/oauth2/token", { method: "POST", body: new URLSearchParams({
client_id: config.twitchClientId,
@ -125,7 +127,21 @@ app.get("/callback", async (request, response) => {
response.redirect(307, '/');
});
//app.get("/session", (request, response) => { response.send(request.session); });
// Frontend templates
app.get("/", async (request, response) => {
if (!request.session) {
throw new Error ("Missing request.session")
}
if (!request.session.user) {
response.render('main.eta', { loggedIn: false });
} else {
response.render('main.eta', { loggedIn: true, userName: request.session.user.display_name, userProfilePicture: request.session.user.profile_image_url });
}
});
// Logout
app.get ("/logout", async (request, response) => request.session!.destroy((err) => response.redirect(307, '/')));
const server = app.listen(config.port, () => {
console.log(`Listening on port ${config.port}`);