diff options
author | eug-vs <eug-vs@keemail.me> | 2020-06-25 12:08:15 +0300 |
---|---|---|
committer | eug-vs <eug-vs@keemail.me> | 2020-06-25 12:08:15 +0300 |
commit | 64f5f8c3f9660f649dfdaad07d84aa8c26b9661e (patch) | |
tree | f6ad390823b39bbc8f956843e062a59997033eb3 | |
parent | a9678b794758164a86a8c136c1d8acc8b1d0135d (diff) | |
download | which-api-64f5f8c3f9660f649dfdaad07d84aa8c26b9661e.tar.gz |
feat: setup global auth hooks
-rw-r--r-- | hooks/requireAuth.ts | 7 | ||||
-rw-r--r-- | hooks/tryAuthenticate.ts | 8 | ||||
-rw-r--r-- | services/index.ts | 8 | ||||
-rw-r--r-- | services/votes/votes.hooks.ts | 4 |
4 files changed, 25 insertions, 2 deletions
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<HookContext> => { + 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<HookContext> => { + 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<HookContext> => { const { params: { user} } = context; @@ -9,7 +9,7 @@ const addUserId = async (context: HookContext): Promise<HookContext> => { export default { before: { - create: [authenticate('jwt'), addUserId] + create: [requireAuth, addUserId] } }; |