From 64f5f8c3f9660f649dfdaad07d84aa8c26b9661e Mon Sep 17 00:00:00 2001 From: eug-vs Date: Thu, 25 Jun 2020 12:08:15 +0300 Subject: feat: setup global auth hooks --- hooks/requireAuth.ts | 7 +++++++ hooks/tryAuthenticate.ts | 8 ++++++++ services/index.ts | 8 ++++++++ services/votes/votes.hooks.ts | 4 ++-- 4 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 hooks/requireAuth.ts create mode 100644 hooks/tryAuthenticate.ts diff --git a/hooks/requireAuth.ts b/hooks/requireAuth.ts new file mode 100644 index 0000000..a7b0e96 --- /dev/null +++ b/hooks/requireAuth.ts @@ -0,0 +1,7 @@ +import { HookContext } from '@feathersjs/feathers'; + +export default async (context: HookContext): Promise => { + if (!context.params.user) throw new Error('This endpoint requires auth!'); + return context; +}; + diff --git a/hooks/tryAuthenticate.ts b/hooks/tryAuthenticate.ts new file mode 100644 index 0000000..e179417 --- /dev/null +++ b/hooks/tryAuthenticate.ts @@ -0,0 +1,8 @@ +import { HookContext } from '@feathersjs/feathers'; +import { authenticate } from '@feathersjs/authentication'; + + +export default async (context: HookContext): Promise => { + return authenticate('jwt')(context).catch(() => context); +}; + diff --git a/services/index.ts b/services/index.ts index 638fb7a..fe5ffdc 100644 --- a/services/index.ts +++ b/services/index.ts @@ -5,11 +5,19 @@ import Profiles from './profiles/profiles.service'; import Votes from './votes/votes.service'; import Auth from './auth/auth.service'; +import tryAuthenticate from '../hooks/tryAuthenticate'; + export default (app: Application): void => { app.configure(Auth); app.configure(Users); app.configure(Polls); app.configure(Profiles); app.configure(Votes); + + app.hooks({ + before: { + all: tryAuthenticate + } + }) }; diff --git a/services/votes/votes.hooks.ts b/services/votes/votes.hooks.ts index 63f19e3..1cf7261 100644 --- a/services/votes/votes.hooks.ts +++ b/services/votes/votes.hooks.ts @@ -1,5 +1,5 @@ import { HookContext } from '@feathersjs/feathers'; -import { authenticate } from '@feathersjs/authentication'; +import requireAuth from '../../hooks/requireAuth'; const addUserId = async (context: HookContext): Promise => { const { params: { user} } = context; @@ -9,7 +9,7 @@ const addUserId = async (context: HookContext): Promise => { export default { before: { - create: [authenticate('jwt'), addUserId] + create: [requireAuth, addUserId] } }; -- cgit v1.2.3