# Authentication

The Anthentication is a class to manage login/logout and session. To use it you must create a class inside  src/security. Call it whenever you want, but in this case we'll call it CustomAuthenticator

```javascript
import Auth from "../Plasma/Security/Auth";
import Session from "../Plasma/Security/Session";
import Ajax from "../Plasma/Utils/Ajax";

export default class CustomAuthenticator extends Auth {
    
    async login(email, password) {
        return await Ajax.post(PLASMA.getConfig().host + "myroutetologin", {
            userName: email,
            password: password
        }).then((res) => {
            //if the result from your backend is positive
            Session.setSession(res.user.authToken, res.user.userName)
            return true;
            //if your result from your backend is negative
            return false;
        })
    }

    async logout() {
        return await Ajax.post(PLASMA.getConfig().host + "myroutetologout", {
            authToken: Session.getToken()
        }).then((res) => {
            Session.clearSession()
            return true;
        })
    }

}
```

Here we have a non-working exemple of CustomAuthenticator

First thing you see is that class extend Auth who contain 2 abstract methods: login(\<email or username> , password) and logout() both of them return promise\
\
We write the code we want inside the login and logout methods using Ajax handler and we use Session to do what we want

### Warning

This code is "pseudo-code" containing error specially on login method. As Plasma is writed to work with all type of backend you'll need to write the whole login method matching your backend output
