You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
84 lines
2.2 KiB
84 lines
2.2 KiB
// Copyright © 2023 Entreprise SkamKraft |
|
'use strict'; |
|
import { AgentBuilder } from '../api/agent.js' |
|
import Strategie from '../commun/strategie.js'; |
|
|
|
let strategies = { |
|
register: [ |
|
{ |
|
name: "symbol", |
|
validations: [ |
|
"required", |
|
"max_length|14" |
|
] |
|
}, |
|
{ |
|
name: "faction", |
|
validations: [ |
|
"required" |
|
] |
|
} |
|
], |
|
login: [ |
|
{ |
|
name: "token", |
|
validations: [ |
|
"required" |
|
] |
|
} |
|
] |
|
} |
|
|
|
export class Auth { |
|
constructor(store = false) { |
|
this.store = store; |
|
this.validated = () => {}; |
|
this.error_handler = () => {}; |
|
this.strategies = strategies; |
|
} |
|
|
|
done(validated) { |
|
this.validated = validated; |
|
return this; |
|
} |
|
|
|
fail(error_handler) { |
|
this.error_handler = error_handler; |
|
return this; |
|
} |
|
|
|
async login(token) { |
|
let validateur = new Strategie(this.strategies.login); |
|
validateur.validate("token", token); |
|
if (validateur.errors.length > 0) this.error_handler(validateur.errors); |
|
else { |
|
if (this.store) localStorage.setItem("token", token); |
|
await AgentBuilder.get(token, this.validated, this.error_handler); |
|
} |
|
} |
|
|
|
async relog() { |
|
if(this.#is_login()) await AgentBuilder.get(localStorage.getItem("token"), this.validated, this.error_handler); |
|
else return false; |
|
} |
|
|
|
async register(new_agent) { |
|
let validateur = new Strategie(this.strategies.register); |
|
validateur.validate("symbol", new_agent.symbol); |
|
validateur.validate("faction", new_agent.faction); |
|
if (validateur.errors.length > 0) this.error_handler(validateur.errors); |
|
else { |
|
await AgentBuilder.create(new_agent.symbol, new_agent.faction, (agent) => { |
|
if (this.store) localStorage.setItem("token", agent.token); |
|
this.validated(agent); |
|
}, this.error_handler); |
|
} |
|
} |
|
|
|
#is_login() { |
|
if (this.store && localStorage.getItem("token")) { |
|
return true |
|
} |
|
return false |
|
} |
|
} |