parent
							
								
									35c007aa8d
								
							
						
					
					
						commit
						11aab9281b
					
				
				 17 changed files with 206 additions and 26 deletions
			
			
		@ -0,0 +1,75 @@ | 
				
			|||||||
 | 
					:root { | 
				
			||||||
 | 
					    --main-back-color: rgb(143, 143, 143); | 
				
			||||||
 | 
					    --second-back-color: black; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face { | 
				
			||||||
 | 
					    font-family: M42; | 
				
			||||||
 | 
					    src: url("/assets/fonts/m42.TTF"); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* { | 
				
			||||||
 | 
					    box-sizing: border-box; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					body { | 
				
			||||||
 | 
					    background-color: var(--main-back-color); | 
				
			||||||
 | 
					    font-family: 'M42'; | 
				
			||||||
 | 
					    font-size: 7px; | 
				
			||||||
 | 
					    margin: 0px; | 
				
			||||||
 | 
					    padding: 0px; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*footer*/ | 
				
			||||||
 | 
					footer { | 
				
			||||||
 | 
					    position: fixed; | 
				
			||||||
 | 
					    width: 100%; | 
				
			||||||
 | 
					    bottom: 0; | 
				
			||||||
 | 
					    display: flex; | 
				
			||||||
 | 
					    justify-content: center; | 
				
			||||||
 | 
					    background-color: var(--second-back-color); | 
				
			||||||
 | 
					    color: white; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*nav bar*/ | 
				
			||||||
 | 
					.nav-nav { | 
				
			||||||
 | 
					    --nav-img-width: 100px; | 
				
			||||||
 | 
					    background-color: var(--second-back-color); | 
				
			||||||
 | 
					    display: flex; | 
				
			||||||
 | 
					    justify-content: space-between; | 
				
			||||||
 | 
					    align-items: center; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					.nav-nav .nav-brand { | 
				
			||||||
 | 
					    display: flex; | 
				
			||||||
 | 
					    justify-content: center; | 
				
			||||||
 | 
					    align-items: center; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					.nav-nav .nav-brand img { | 
				
			||||||
 | 
					    width: var(--nav-img-width); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.nav-nav .nav-links { | 
				
			||||||
 | 
					    --links-color: rgb(0,0,0); | 
				
			||||||
 | 
					    --links-backcolor: rgb(255, 123, 71); | 
				
			||||||
 | 
					    --links-border-color: rgb(255, 173, 118); | 
				
			||||||
 | 
					    height: 70%; | 
				
			||||||
 | 
					    display: flex; | 
				
			||||||
 | 
					    justify-content: space-between; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.smooth { | 
				
			||||||
 | 
					    padding: 5px; | 
				
			||||||
 | 
					    border-radius: 10px; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.nav-link { | 
				
			||||||
 | 
					    margin-right: 10px; | 
				
			||||||
 | 
					    background-color: var(--links-backcolor); | 
				
			||||||
 | 
					    color: var(--links-color); | 
				
			||||||
 | 
					    border: 4px solid var(--links-border-color);  | 
				
			||||||
 | 
					    list-style: none; | 
				
			||||||
 | 
					    display: flex; | 
				
			||||||
 | 
					    justify-content: center; | 
				
			||||||
 | 
					    align-items: center; | 
				
			||||||
 | 
					    box-shadow: 3px 2px white; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -1,14 +1,16 @@ | 
				
			|||||||
<nav> | 
					<nav class="nav-nav"> | 
				
			||||||
  <div class=".nav-brand"> | 
					  <div class="nav-brand"> | 
				
			||||||
    <img src="assets/" /> | 
					    <img src="assets/logo/logoblancnotext.png" /> | 
				
			||||||
  </div> | 
					  </div> | 
				
			||||||
  <ul class="nav-links"> | 
					  <ul class="nav-links"> | 
				
			||||||
    <li class="nav-link">Contracts</li> | 
					    <li class="nav-link smooth">Contracts</li> | 
				
			||||||
    <li class="nav-link">System</li> | 
					    <li class="nav-link smooth">System</li> | 
				
			||||||
    <li class="nav-link">Ships</li> | 
					    <li class="nav-link smooth">Ships</li> | 
				
			||||||
    <li class="nav-link">Profile</li> | 
					    <li class="nav-link smooth">Sign in</li> | 
				
			||||||
    <li class="nav-link">Ships</li> | 
					    <li class="nav-link smooth">Sigh up</li> | 
				
			||||||
  </ul> | 
					  </ul> | 
				
			||||||
</nav> | 
					</nav> | 
				
			||||||
<main id="block-content"></main> | 
					<main id="block-content"></main> | 
				
			||||||
<footer></footer> | 
					<footer> | 
				
			||||||
 | 
					  <p>Skamcraft Sarl</p> | 
				
			||||||
 | 
					</footer> | 
				
			||||||
 | 
				
			|||||||
@ -1,2 +0,0 @@ | 
				
			|||||||
<p>Coucou</p> | 
					 | 
				
			||||||
<button id="btn1">Btn 1</button> | 
					 | 
				
			||||||
@ -1,2 +0,0 @@ | 
				
			|||||||
<p>Hello</p> | 
					 | 
				
			||||||
<button id="btn2">Btn 2</button> | 
					 | 
				
			||||||
@ -0,0 +1,66 @@ | 
				
			|||||||
 | 
					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); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,49 @@ | 
				
			|||||||
 | 
					export default class Strategie { | 
				
			||||||
 | 
					    constructor(strategie) { | 
				
			||||||
 | 
					        this.strategie = strategie; | 
				
			||||||
 | 
					        this.errors = []; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    validate(name, input) { | 
				
			||||||
 | 
					        this.errors = []; | 
				
			||||||
 | 
					        this.strategie.forEach(input_strat => { | 
				
			||||||
 | 
					            if(input_strat.name === name) input_strat.validations.forEach((validation) => { | 
				
			||||||
 | 
					                let args = validation.split("|"); | 
				
			||||||
 | 
					                switch (args[0]) { | 
				
			||||||
 | 
					                    case "required": 
 | 
				
			||||||
 | 
					                        this.test(this.required(input), `${name} is required.`); | 
				
			||||||
 | 
					                        break; | 
				
			||||||
 | 
					                    case "max_lenght": | 
				
			||||||
 | 
					                        this.test(this.max_lenght(input, args[1]), `${name} must have a max lenght of ${args[1]}.`); | 
				
			||||||
 | 
					                        break; | 
				
			||||||
 | 
					                    case "min_lenght": | 
				
			||||||
 | 
					                        this.test(this.min_lenght(input, args[1]), `${name} must have a min lenght of ${args[1]}`); | 
				
			||||||
 | 
					                        break; | 
				
			||||||
 | 
					                } | 
				
			||||||
 | 
					            }); | 
				
			||||||
 | 
					        }); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    test(test, error) { | 
				
			||||||
 | 
					        if(!test) this.errors.push(error); 
 | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    valide_email(input) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    min_lenght(input, lenght) { | 
				
			||||||
 | 
					        if(input.lenght < lenght) return false; | 
				
			||||||
 | 
					        return true; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    max_lenght(input, lenght) { | 
				
			||||||
 | 
					        if(input.lenght > args[0]) return false; | 
				
			||||||
 | 
					        return true; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    required(input) { | 
				
			||||||
 | 
					        if (input === undefined || input === null || input === "") return false; | 
				
			||||||
 | 
					        return true; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
					Loading…
					
					
				
		Reference in New Issue