@typescript-auth/core
TypeScript icon, indicating that this package has built-in type declarations

1.1.3 • Public • Published

npm version main codecov Known Vulnerabilities

@typescript-auth/core

The main propose of this package, is to provide general utilities for authorization & authentication. It also contains core functions, for few other modules of the @typescript-auth namespace.

Table of Contents

Installation

npm install @typescript-auth/core --save

Usage

Ability/Permissions

The AbilityManager provides an easy way to group permissions for a client session and allows sharing those permissions between UI, API and microservices. It easily scales between a claim based and subject/attribute based authorization.

AbilityManager

import {
    AbilityManager,
    buildAbilityMetaFromName,
    PermissionItem
} from "@typescript-auth/core";

type User = {
    id: number;
    name: string;
    age: number;
}

const permissions: PermissionItem<User>[] = [
    {
        id: 'user_add', 
        condition: {
            age: {$gt: 20}
        }
    },
    {
        id: 'user_drop'
    }
];

const manager = new AbilityManager(permissions);

console.log(manager.can('add', 'user', {age: 40}));
// true

console.log(manager.can('add', 'user', {age: 18}))
// false

console.log(manager.can('drop','user'));
// true

AbilityMeta

import {
    buildAbilityMetaFromName
} from "@typescript-auth/core";

const meta = buildAbilityMetaFromName('user_add');
console.log(meta);
// {action: 'add', subject: 'user'}

HTTP Header

The http utilities turn around header parsing and building.

AuthorizationHeader

import {
    parseAuthorizationHeader,
    stringifyAuthorizationHeader
} from "@typescript-auth/core";

const basicValue = Buffer
    .from('admin:start123')
    .toString('base64');

const value = parseAuthorizationHeader(`Basic ${basicValue}`);
console.log(value);
// {type: 'Basic', username: 'admin', password: 'start123'}

// -------------------------------------------------

let headerValue = stringifyAuthorizationHeader({
    type: 'Basic',
    username: 'admin',
    password: 'start123'
});
console.log(headerValue);
// Basic xxxxxxx

headerValue = stringifyAuthorizationHeader({
    type: 'Bearer',
    token: 'start123'
});
console.log(headerValue);
// Bearer start123

Protocols

Oauth2

URL

import {Oauth2Client} from "@typescript-auth/core";

let oauth2Client = new Oauth2Client({
    token_host: 'https://example.com/',
    client_id: 'client'
});

let url = oauth2Client.buildAuthorizeURL({
    redirect_uri: 'https://example.com/redirect'
});
console.log(url);
// https://example.com/oauth/authorize?response_type=code&client_id=client&redirect_uri=https://example.com/redirect

Token

import {Oauth2Client} from "@typescript-auth/core";

const oauth2Client = new Oauth2Client({
    client_id: 'client',
    client_secret: 'secret',
    token_host: 'https://example.com/',
    redirect_uri: 'https://example.com/redirect',
    scope: ['email']
});

let token = await oauth2Client.getTokenWithRefreshToken({refresh_token: 'refresh_token'});
console.log(token);
// {...}

token = await oauth2Client.getTokenWithClientCredentials();
token = await oauth2Client.getTokenWithPasswordGrant({username: 'admin', password: 'start123'});
token = await oauth2Client.getTokenWithAuthorizeGrant({state: 'state', code: 'code'});

Package Sidebar

Install

npm i @typescript-auth/core

Weekly Downloads

0

Version

1.1.3

License

MIT

Unpacked Size

87.2 kB

Total Files

123

Last publish

Collaborators

  • tada5hi