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.
		
		
		
		
		
			
		
			
				
					
					
						
							89 lines
						
					
					
						
							2.3 KiB
						
					
					
				
			
		
		
	
	
							89 lines
						
					
					
						
							2.3 KiB
						
					
					
				| // Copyright © 2023 Entreprise SkamKraft | |
| 'use strict'; | |
| import { AgentBuilder } from '../api/agent.js' | |
| import Strategie from '../commun/strategie.js'; | |
| 
 | |
| let strategies = { | |
|     register: [ | |
|         { | |
|             name: "name", | |
|             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; | |
|     } | |
| 
 | |
|     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); | |
|             AgentBuilder.get(token, this.validated, this.error_handler); | |
|         } | |
|     } | |
| 
 | |
|     relog() { | |
|         if(this.#is_login()) { | |
|             AgentBuilder.get(localStorage.getItem("token"), this.validated, this.error_handler);  | |
|             return true; | |
|         } | |
|         return false; | |
|     } | |
| 
 | |
|     register(new_agent) { | |
|         let validateur = new Strategie(this.strategies.register); | |
|         validateur.validate("name", new_agent.name); | |
|         validateur.validate("faction", new_agent.faction); | |
|         if (validateur.errors.length > 0) this.error_handler(validateur.errors); | |
|         else {             | |
|             AgentBuilder.create(new_agent.name, new_agent.faction, (agent) => { | |
|                 if (this.store) localStorage.setItem("token", agent.token); | |
|                 this.validated(agent); | |
|             }, this.error_handler); | |
|         } | |
|     } | |
| 
 | |
|     unload_token() { | |
|         if(this.#is_login()) localStorage.removeItem("token"); | |
|     } | |
| 
 | |
|     #is_login() { | |
|         if (localStorage.getItem("token")) return true | |
|         return false | |
|     } | |
| } |