@kernel-js/auth
Version:
174 lines (116 loc) • 4.25 kB
Markdown
# @kernel-js/auth<br />
[](https://travis-ci.org/kernel-js/auth)
<!-- [](https://coveralls.io/github/kernel-js/auth?branch=master) -->
<br />
<!-- # Why
First of all I created this to support development of [Kernel Framework](https://www.npmjs.com/package/@kernel-js/framework).<br />
Just like the rest of the packages that make up the framework, I make the most of other existing libraries that are well
tested on a day-to-day basis. The idea is not to reinvent the wheel, just join the ideas in a lightweight framework
(the focus is on the client side), simple to use and make the code on the front more beautiful and organized. -->
# Install
```cmd
npm install @kernel-js/auth
```
# Enums
<a name="storageMethods" /></a>
## StorageMethods
Exposes the possible ways of storing the data received through native browser drives.
```js
import { StorageMethods } from '@kernel-js/auth';
StorageMethods.LocalStorage
StorageMethods.CookieStorage
StorageMethods.SessionStorage
```
# Classes
<a name="oauth" /></a>
## OAuthAuthentication
Used for OAuth type password authentication. By default, it uses the model established by Laravel Passport.
new OAuthAuthentication(config);
__Arguments__
* `config` - Object with the authentication settings.
* `request` - It waits for an Axios instance and will be used to make the requests.
* `storage - method` - Expect a StorageMethods enum that will tell you how to persist the data.
* `client - id` - OAuth client id.
* `client - scope` - Scope says you want to get (optional).
* `client - secret` - Secret of the client OAuth.
```js
import Axios from 'axios';
import { StorageMethods, OAuthAuthentication } from '@kernel-js/auth';
new OAuthAuthentication({
storage: {
method: StorageMethods.LocalStorage,
},
request: Axios.create({
baseURL: 'http://localhost:8000',
headers: {},
}),
client: {
id: '1',
scope: '',
secret: 'VRoONFr4soNZkoSYXiYZzcx8H5VfJdUt9IYk1l8o',
},
});
```
# Methods
All classes use by default the interface Authentication that defines some common methods, being them.
<a name="login" /></a>
## Login
Method that authenticates the user and returns their access tokens, in addition to the expiration date of the user.
new OAuthAuthentication(config...).login(data, url);
__Arguments__
* `data` - Object that holds the user data as the username and password.
* `url (Optional)` - path in which the authentication request will be sent. By default `/oauth/token` is used.
```js
import Axios from 'axios';
import { StorageMethods, OAuthAuthentication } from '@kernel-js/auth';
const auth = new OAuthAuthentication(config...);
auth
.login({
'username': 'foo@foo.com',
'password': '123456',
})
.then(response => {
console.log(auth.isAuthenticated());
});
```
<a name="logout" /></a>
## Logout
Clears user authentication data.
new OAuthAuthentication(config...).logout();
```js
import Axios from 'axios';
import { StorageMethods, OAuthAuthentication } from '@kernel-js/auth';
const auth = new OAuthAuthentication(config...);
auth
.logout()
.then(response => {
console.log(auth.isGuest());
});
```
<a name="isGuest" /></a>
## isGuest
Check if an authenticated user exist.
new OAuthAuthentication(config...).isGuest();
```js
import Axios from 'axios';
import { StorageMethods, OAuthAuthentication } from '@kernel-js/auth';
const auth = new OAuthAuthentication(config...);
console.log(auth.isGuest());
```
<a name="isAuthenticated" /></a>
## isAuthenticated
Opposite the isGuest method.
new OAuthAuthentication(config...).isAuthenticated();
```js
import Axios from 'axios';
import { StorageMethods, OAuthAuthentication } from '@kernel-js/auth';
const auth = new OAuthAuthentication(config...);
console.log(auth.isAuthenticated());
```
---------------------------------------
# Authors
This library was developed by Bruno Santos, Carlos Escouto and Gustavo Siqueira
# Contribute
Please do! Check out our [Contributing guidelines](CONTRIBUTING.md).
# License
[MIT](LICENSE) © 2018-2019 Kernel JS