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.
66 lines
1.8 KiB
66 lines
1.8 KiB
import { AgentBuilder } from '../api/agent.js' |
|
import Strategie from '../commun/strategie.js'; |
|
|
|
export class Auth { |
|
constructor(store = false) { |
|
this.store = store; |
|
this.validated = () => {}; |
|
this.error_handler = () => {}; |
|
this.strategies = { |
|
register: [ |
|
{ |
|
name: "symbol", |
|
validations: [ |
|
"required", |
|
"max_lenght|14" |
|
] |
|
}, |
|
{ |
|
name: "faction", |
|
validations: [ |
|
"required" |
|
] |
|
} |
|
], |
|
login: [ |
|
{ |
|
name: "token", |
|
validations: [ |
|
"required" |
|
] |
|
} |
|
] |
|
} |
|
} |
|
|
|
done(validated) { |
|
this.validated = validated; |
|
return this; |
|
} |
|
|
|
fail(error_handler) { |
|
this.error_handler = error_handler; |
|
return this; |
|
} |
|
|
|
login(token) { |
|
let validateur = new Strategie(this.strategies.login); |
|
validateur.validate("token", token); |
|
if (validateur.errors) this.error_handler(validateur.errors); |
|
else { |
|
if (store) localStorage.setItem("token", token); |
|
AgentBuilder.get(token, this.validated); |
|
} |
|
} |
|
|
|
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) this.error_handler(validateur.errors); |
|
else { |
|
if (store) localStorage.setItem("token", token); |
|
AgentBuilder.create(new_agent.symbol, new_agent.faction, this.validated); |
|
} |
|
} |
|
} |