1.0.1 • Published 2 years ago

@smartbit4all/session-nextjs v1.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

Smart Session for NextJS


How to use

Installation

Go to your project, open the terminal and use the following command:

npm i cookie-cutter@^0.2.0

npm i @smartbit4all/session-nextjs

Usage

In order to use the SmartSessionService I recommend to follow the guideline belove.

Create a service which will handle the session and the authentication.

Terminal:

>>> mkdir services

*/services/authentication.service.ts:

import { Injectable } from "@smartbit4all/di-provider";

@Injectable
@Provide([SmartSessionService])
export class AuthenticationService {
    private url?: string;

    constructor(private session: SmartSessionService) {
        this.session.setUrl("http://localhost:3000/api");
        this.session.setCookieName("example-jwt");

        this.startSession();
    }

    async startSession(): Promise<void> {
        await this.session.initialize();
    }

    async getSession(): Promise<SessionInfoData> {
        return this.session.getSession();
    }

    async isAuthenticated(): Promise<boolean> {
        return this.session.getIsAuthenticated();
    }

}

Use dependency injection to inject this new service into your component(s). You must inject this into all components which the application could start with (for instance AppComponent or LoginComponent).

any.component.ts:

import { Provide } from "@smartbit4all/di-provider";

@Provide([AuthenticationService])
class Any extends React.Component<any> {

    constructor(props: any, private authentication: AuthenticationService) {
        super(props);
    }
}

The AuthenticationService must be prepared to use the SmartSessionService.

authentication.service.ts:

Authentication state changed

The change of authentication state can be detected in any components. To handle it you must subscribe to the change itself.

Note that in this version a user is authenticated when the response of the GET session contains a list of authentications.

this.isAuthenticated = response.authentications.length > 0

any.component.ts:

constructor(
	private auth: AuthenticationService,
	private session: SmartSessionService
) {
	this.session.authenticationStateChanged.subscribe((isAuth: boolean) => {
		...
	});
}

Version logs

@smartbit4all/session-nextjs v1.0.1

Type: Update

The package has been published.