Skip to content

Commit 4507127

Browse files
committed
Hide anonymous joins from the user's profile
1 parent 3fae575 commit 4507127

3 files changed

Lines changed: 16 additions & 5 deletions

File tree

migrations/20200328131352_initial_schema.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export async function up(knex: Knex): Promise<void> {
4646
.inTable('groups')
4747
.index()
4848

49-
table.boolean('isAnon')
49+
table.boolean('isAnon').defaultTo(0)
5050
})
5151
}
5252

src/components/groups/group.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ export class Group extends Model {
1818
createdAt: Date
1919
maxAttendees: number
2020

21+
/**
22+
* See {@link User.isAnon}
23+
*/
24+
isAnon: boolean
25+
2126
$beforeInsert(): void {
2227
this.createdAt = new Date()
2328
}

src/components/users/user.routes.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,24 @@ import { getUser, updateRole, updateUser } from './user.service'
1010

1111
const router = Router()
1212

13-
router.get('/:id', isAuthenticated, checkIdParam, getUser, (req, res) =>
13+
router.get('/:id', isAuthenticated, checkIdParam, getUser, (req, res) => {
14+
const u = req.userToShow
15+
const viewsSelf = u.id == (req.user as User).id
16+
const isAdmin = (req.user as User).role !== RoleType.USER
17+
18+
const groups = viewsSelf || isAdmin ? u.groups : u.groups.filter(g => !g.isAnon)
19+
1420
res.render('user/show', {
15-
userToShow: req.userToShow,
21+
userToShow: { ...req.userToShow, groups },
1622
ROLES: ROLES
1723
})
18-
)
24+
})
1925

2026
router.patch('/:id/role',
2127
requireRoles(RoleType.ADMIN),
2228
check('role')
2329
.isString()
24-
.custom((input) => {
30+
.custom((input) => {
2531
return [...ROLES.keys()]
2632
.some((element) => element == input)
2733
})

0 commit comments

Comments
 (0)