Skip to content

Commit b2036e4

Browse files
Logout functionality
1 parent b9fe06b commit b2036e4

File tree

6 files changed

+88
-79
lines changed

6 files changed

+88
-79
lines changed

backend/app/controllers/authController.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,24 @@ class AuthController extends Controller {
5353
res.status(500).json(error)
5454
}
5555
}
56+
57+
/**
58+
* End a user's session
59+
* @param {*} req
60+
* @param {*} res
61+
*/
62+
logout(req, res) {
63+
const userId = req.session
64+
if (!userId) {
65+
return res.json({
66+
message: 'You are not athenticated',
67+
})
68+
}
69+
req.session = null
70+
return res.json({
71+
message: "You've been logged out",
72+
})
73+
}
5674
}
5775

5876
module.exports = new AuthController()

backend/routes/auth.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ router.get('/user', (req, res) => {
2121
* Logout a user from the system
2222
*/
2323
router.post('/logout', (req, res) => {
24-
res.json('You have been logged ot')
24+
authController.logout(req, res)
2525
})
2626

2727
module.exports = router

layouts/default.vue

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,61 @@
11
<template>
22
<v-app>
3-
<v-app-bar app flat> </v-app-bar>
3+
<v-app-bar flat app hide-on-scroll>
4+
<v-toolbar-items>
5+
<nuxt-link to="/">
6+
<v-img height="70" width="70" src="/icon.png" />
7+
</nuxt-link>
8+
</v-toolbar-items>
9+
<v-spacer />
10+
<v-toolbar-items>
11+
<v-menu
12+
v-if="$auth.loggedIn"
13+
bottom
14+
nudge-top
15+
min-width="200px"
16+
rounded
17+
offset-y
18+
>
19+
<template #activator="{ on }">
20+
<v-btn data-profile-menu icon x-large v-on="on">
21+
<v-avatar color="brown" size="48">
22+
<span class="white--text headline">JD</span>
23+
</v-avatar>
24+
</v-btn>
25+
</template>
26+
<v-card>
27+
<v-list-item-content class="justify-center">
28+
<div class="mx-auto text-center">
29+
<v-avatar color="brown">
30+
<span class="white--text headline">JD</span>
31+
</v-avatar>
32+
<h3>{{ $auth.user.name }}</h3>
33+
<p class="caption mt-1">
34+
{{ $auth.user.email }}
35+
</p>
36+
<v-divider class="my-3" />
37+
<v-btn to="/" depressed rounded text> Home </v-btn>
38+
<v-divider class="my-3" />
39+
<v-btn to="/home" depressed rounded text> My account </v-btn>
40+
<v-divider class="my-3" />
41+
<v-btn
42+
color="error"
43+
depressed
44+
rounded
45+
text
46+
@click="$auth.logout()"
47+
>
48+
Logout
49+
</v-btn>
50+
</div>
51+
</v-list-item-content>
52+
</v-card>
53+
</v-menu>
54+
<template v-else>
55+
<v-btn text link to="/login"> Login </v-btn>
56+
</template>
57+
</v-toolbar-items>
58+
</v-app-bar>
459
<v-main>
560
<v-container>
661
<nuxt />

package-lock.json

Lines changed: 12 additions & 76 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
"mysql2": "^2.2.5",
2727
"nuxt": "^2.15.3",
2828
"redis": "^3.1.2",
29-
"sessionstore": "^1.3.7",
29+
"sessionstore": "^0.4.8",
3030
"vee-validate": "^3.4.5"
3131
},
3232
"devDependencies": {

store/index.js

Whitespace-only changes.

0 commit comments

Comments
 (0)