-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathsession.component.ts
More file actions
33 lines (28 loc) · 1.21 KB
/
session.component.ts
File metadata and controls
33 lines (28 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import { bind, Binding, Component, ContextTags, ProviderMap, config } from '@loopback/core';
import { CookieSerializeOptions } from 'cookie';
import { SessionBindings } from './keys';
import { SessionProvider } from './providers';
import { SessionRepository } from './repositories';
import { SessionStore } from './services';
import { SessionConfig } from './types';
import { juggler } from '@loopback/repository';
@bind({tags: {[ContextTags.KEY]: SessionBindings.COMPONENT}})
export class SessionComponent<DataSource extends juggler.DataSource> implements Component {
providers: ProviderMap;
bindings: Binding<unknown>[] = [
Binding.bind(SessionBindings.MEMORY).toClass(SessionStore),
Binding.bind(SessionBindings.REPOSITORY).toClass(SessionRepository),
];
constructor(
@config() sessionConfig: SessionConfig<DataSource>,
) {
this.providers = {
[SessionBindings.PROVIDER.key]: SessionProvider,
};
this.bindings.push(...[
Binding.bind<DataSource>(SessionBindings.DATA_SOURCE).toClass(sessionConfig.DataSource),
Binding.bind(SessionBindings.COOKIE_OPTIONS.key).to(sessionConfig.cookie || {}),
Binding.bind(SessionBindings.OPTIONS.key).to(sessionConfig.session),
]);
}
}