# Marvin auth kit How to use marvin-auth-kit ## Initialise ```typescript= // auth.ts import AuthKit from 'marvin-auth-kit'; const authKit = new AuthKit('http://zandbakvlooys-swm01.marvin.vito.local:8080/auth') export authKit; ``` of ```typescript= // index.ts // auth.service.ts import AuthKit from 'marvin-auth-kit'; AuthKit.config('http://zandbakvlooys-swm01.marvin.vito.local:8080/auth'); export default AuthKit; // login.container.tsx import AuthKit from 'auth.service'; ... function handleLogin(username, password) { AuthKit.login(username, password); } ``` ## Authentication related functions ```typescript= // app.ts import { authKit } from './auth'; // login with username & password, to retreive token // this token is also persisted in the auth instance and used for future requests authKit.login(username, password) .then(() => { // success, continue with }) .catch(() => { // catch login error }); // remove token and thereby active session authKit.logout(); ``` Een token is maar geldig voor een bepaald timeframe. Wanneer een token verlopen is, worden nieuwe tokens opgevraagd dmv een refresh request. Op basis van het `refreshToken` wordt een nieuw `accessToken` en `refreshToken` opgevraagd. Dit refresh mechanisme is ingebakken in de auth library en doormiddel van interceptors toegepast op HTTP requests. ## Register ```typescript= // app.ts import { authKit } from './auth'; // register a new user authKit.register.request(email, password); // confirm a new users registration authKit.register.confirm(confirmToken); ``` ## Email ```typescript= // app.ts import { authKit } from './auth'; // request a users email change url via email authKit.email.request(email); // confirm a new users email authKit.email.confirm(confirmToken); ``` ## Password ```typescript= // app.ts import { authKit } from './auth'; // request a users password change url via email authKit.password.request(email); // confirm a new users password authKit.password.confirm(confirmToken, password); ``` ## Roles ```typescript= // app.ts import { authKit } from './auth'; // CRUD a role authKit.roles.create(role); authKit.roles.update(role); authKit.roles.destroy(role); authKit.roles.query({ offset: 5, limit: 10}); ``` ## Users ```typescript= // app.ts import { authKit } from './auth'; // CRUD a role authKit.users.create(user); authKit.users.read(email); authKit.users.update(user); authKit.users.destroy(user); authKit.users.query({ offset: 5, limit: 10, role: 'admin'}); ```