Showing
7 changed files
with
14 additions
and
32 deletions
... | @@ -87,6 +87,9 @@ export const logout = (req, res) => { | ... | @@ -87,6 +87,9 @@ export const logout = (req, res) => { |
87 | res.redirect(routes.home); | 87 | res.redirect(routes.home); |
88 | }; | 88 | }; |
89 | 89 | ||
90 | +export const getMe = (req, res) => | ||
91 | + res.render("userDetail", { pageTitle: "User Detail", user: req.user }); | ||
92 | + | ||
90 | // export const users = (req, res) => res.render("users", { pageTitle: "Users" }); | 93 | // export const users = (req, res) => res.render("users", { pageTitle: "Users" }); |
91 | export const userDetail = (req, res) => | 94 | export const userDetail = (req, res) => |
92 | res.render("userDetail", { pageTitle: "User Detail" }); | 95 | res.render("userDetail", { pageTitle: "User Detail" }); | ... | ... |
... | @@ -6,7 +6,7 @@ const multerVideo = multer({ dest: "uploads/videos/" }); | ... | @@ -6,7 +6,7 @@ const multerVideo = multer({ dest: "uploads/videos/" }); |
6 | export const localsMiddleware = (req, res, next) => { | 6 | export const localsMiddleware = (req, res, next) => { |
7 | res.locals.siteName = "my Youtube"; | 7 | res.locals.siteName = "my Youtube"; |
8 | res.locals.routes = routes; | 8 | res.locals.routes = routes; |
9 | - res.locals.user = req.user || null; | 9 | + res.locals.loggedUser = req.user || null; |
10 | next(); | 10 | next(); |
11 | }; | 11 | }; |
12 | 12 | ... | ... |
... | @@ -10,6 +10,7 @@ import { | ... | @@ -10,6 +10,7 @@ import { |
10 | postLogin, | 10 | postLogin, |
11 | githubLogin, | 11 | githubLogin, |
12 | postGithubLogin, | 12 | postGithubLogin, |
13 | + getMe, | ||
13 | } from "../controllers/userController"; | 14 | } from "../controllers/userController"; |
14 | import { onlyPublic, onlyPrivate } from "../middlewares"; | 15 | import { onlyPublic, onlyPrivate } from "../middlewares"; |
15 | 16 | ||
... | @@ -33,5 +34,5 @@ globalRouter.get( | ... | @@ -33,5 +34,5 @@ globalRouter.get( |
33 | passport.authenticate("github", { failureRedirect: "/login" }), | 34 | passport.authenticate("github", { failureRedirect: "/login" }), |
34 | postGithubLogin | 35 | postGithubLogin |
35 | ); | 36 | ); |
36 | - | 37 | +globalRouter.get(routes.me, getMe); |
37 | export default globalRouter; | 38 | export default globalRouter; | ... | ... |
... | @@ -10,6 +10,7 @@ const USERS = "/users"; | ... | @@ -10,6 +10,7 @@ const USERS = "/users"; |
10 | const USER_DETAIL = "/:id"; | 10 | const USER_DETAIL = "/:id"; |
11 | const EDIT_PROFILE = "/edit-profile"; | 11 | const EDIT_PROFILE = "/edit-profile"; |
12 | const CHANGE_PASSWORD = "/change-password"; | 12 | const CHANGE_PASSWORD = "/change-password"; |
13 | +const ME = "/me"; | ||
13 | 14 | ||
14 | // Videos | 15 | // Videos |
15 | const VIDEOS = "/videos"; | 16 | const VIDEOS = "/videos"; |
... | @@ -63,6 +64,7 @@ const routes = { | ... | @@ -63,6 +64,7 @@ const routes = { |
63 | }, | 64 | }, |
64 | gitHub: GITHUB, | 65 | gitHub: GITHUB, |
65 | githubCallback: GITHUB_CALLBACK, | 66 | githubCallback: GITHUB_CALLBACK, |
67 | + me: ME, | ||
66 | }; | 68 | }; |
67 | // template에서 직접 접근이 필요한 경우 함수로 바꿔준다. | 69 | // template에서 직접 접근이 필요한 경우 함수로 바꿔준다. |
68 | export default routes; | 70 | export default routes; | ... | ... |
text/study.txt
deleted
100644 → 0
1 | -express session을 설치한다. npm install express-session | ||
2 | - | ||
3 | -postJoin은 이메일과 비밀번호를 전달하고 next()가 호출되어 postLogin으로 간다. | ||
4 | - | ||
5 | -connect mongo를 통해 저장소를 생성한다. | ||
6 | - | ||
7 | -- 인증에 대한 정리 - | ||
8 | -유저네임과 비밀번호를 이용한 방식(local 방식)은 비교적 간단하다. 유저네임과 비밀번호를 post 방식으로 전달하고 | ||
9 | -설치해준 플러그인인 Mongoose가 자동으로 체크를 해준다. 만약 비밀번호가 맞으면 passport에게 맞다고 알려주고 | ||
10 | -passport는 쿠키를 생성한다. | ||
11 | - | ||
12 | -소셜로그인의 경우에는 조금 다르다 | ||
13 | -먼저 사용자는 깃허브 사이트로 이동하게 되고 거기에서 권한 승인을 한다. | ||
14 | -그 이후에 깃헙 사이트는 우리에게 해당 사용자의 정보를 보내주는데 /auth/github/callback이라는 URL로 오게 된다 | ||
15 | -그렇게 되면 passport가 함수를 호출하는데 githubLoginCallback이라는 우리가 만들어준 함수이다. | ||
16 | -passport가 이함수를 실행하는 것이다. | ||
17 | -이 함수는 모든 사용자 프로필 정보를 받고 이 정보로 필요한 것을 할 수 있다. | ||
18 | -githubLoginCallback 함수의 한가지 조건은 callback(cb) 함수를 리턴해야하는 것이다. | ||
19 | -cb 함수를 실행시켜서 에러가 있는지 유저가 있는지 알려줘야 한다. | ||
20 | - | ||
21 | -에러가 존재하면 passport는 에러가 있구나 유저는 없구나하고 끝내고 | ||
22 | -유저가 존재하면 passport는 이 유저를 가져와 쿠키를 만들고 저장한다. | ||
23 | -이렇게 저장된 쿠키를 브라우저로 보내게 된다. | ||
24 | - | ||
25 | -globalRouter에서 깃허브로 갈때 githubLogin이 실행되는데 깃허브로 보내주는 역할을 한다. | ||
26 | -그리고 githubCallback(URL)로 돌아왔을 때 passport는 사용자가 알려준 함수인 githubLoginCallback을 실행시킨다. | ||
27 | -만약 user를 찾으면 passport는 통과시키며 postGithubLogin을 실행하고 홈으로 리다이렉트한다. |
... | @@ -8,7 +8,7 @@ header.header | ... | @@ -8,7 +8,7 @@ header.header |
8 | input(type="text", placeholder="Search by term...", name="term") | 8 | input(type="text", placeholder="Search by term...", name="term") |
9 | .header__column | 9 | .header__column |
10 | ul | 10 | ul |
11 | - if !user | 11 | + if !loggedUser |
12 | li | 12 | li |
13 | a(href=routes.join) Join | 13 | a(href=routes.join) Join |
14 | li | 14 | li |
... | @@ -17,6 +17,6 @@ header.header | ... | @@ -17,6 +17,6 @@ header.header |
17 | li | 17 | li |
18 | a(href=`/videos${routes.upload}`) Upload | 18 | a(href=`/videos${routes.upload}`) Upload |
19 | li | 19 | li |
20 | - a(href=routes.userDetail(user.id)) Profile | 20 | + a(href=routes.me) Profile |
21 | li | 21 | li |
22 | a(href=routes.logout) Log out | 22 | a(href=routes.logout) Log out | ... | ... |
1 | extends layouts/main | 1 | extends layouts/main |
2 | 2 | ||
3 | block content | 3 | block content |
4 | - p Hello This is userDetail | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
4 | + .user-profile | ||
5 | + .user-profile__header | ||
6 | + img.avatar(src=user.avatarUrl) | ||
7 | + h4.profile__username=user.name | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment