Version 0.1.1 - Ajout d'une page de login et de style
This commit is contained in:
		
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -130,3 +130,5 @@ dist | ||||
| .yarn/install-state.gz | ||||
| .pnp.* | ||||
|  | ||||
| #data | ||||
| ./data/ | ||||
| @@ -2,7 +2,9 @@ const path = require("path"); | ||||
| const root = path.resolve(__dirname, '../') | ||||
|  | ||||
| const __glob = { | ||||
|     ROUTES: root + path.sep + "routes" + path.sep | ||||
|     ROUTES: root + path.sep + "routes" + path.sep, | ||||
|     ROOT: root, | ||||
|     LOGS: root + path.sep + "logs" | ||||
| }; | ||||
|  | ||||
|  | ||||
|   | ||||
							
								
								
									
										15
									
								
								bin/www
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								bin/www
									
									
									
									
									
								
							| @@ -3,11 +3,19 @@ | ||||
| /** | ||||
|  * Module dependencies. | ||||
|  */ | ||||
| var log = require("loguix") | ||||
| var {LogType} = require("loguix") | ||||
| var { __glob } = require("./global-variables") | ||||
| log.setup(__glob.LOGS) | ||||
| const wlog = new LogType("Web") | ||||
| wlog.step.init("start_server",  "Démarrage du serveur Express JS") | ||||
|  | ||||
| var app = require('../main'); | ||||
| var debug = require('debug')('neutral:server'); | ||||
| var http = require('http'); | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Get port from environment and store in Express. | ||||
|  */ | ||||
| @@ -25,6 +33,7 @@ var server = http.createServer(app); | ||||
|  * Listen on provided port, on all network interfaces. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| server.listen(port); | ||||
| server.on('error', onError); | ||||
| server.on('listening', onListening); | ||||
| @@ -65,11 +74,11 @@ function onError(error) { | ||||
|   // handle specific listen errors with friendly messages | ||||
|   switch (error.code) { | ||||
|     case 'EACCES': | ||||
|       console.error(bind + ' requires elevated privileges'); | ||||
|       wlog.step.error("start_server", bind + ' requires elevated privileges'); | ||||
|       process.exit(1); | ||||
|       break; | ||||
|     case 'EADDRINUSE': | ||||
|       console.error(bind + ' is already in use'); | ||||
|       wlog.step.error("start_server" , bind + ' is already in use'); | ||||
|       process.exit(1); | ||||
|       break; | ||||
|     default: | ||||
| @@ -86,5 +95,5 @@ function onListening() { | ||||
|   var bind = typeof addr === 'string' | ||||
|     ? 'pipe ' + addr | ||||
|     : 'port ' + addr.port; | ||||
|   debug('Listening on ' + bind); | ||||
|     wlog.step.end("start_server") | ||||
| } | ||||
|   | ||||
							
								
								
									
										20
									
								
								main.js
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								main.js
									
									
									
									
									
								
							| @@ -5,11 +5,18 @@ const cookieParser = require('cookie-parser'); | ||||
| const app = express(); | ||||
| const fs = require("fs"); | ||||
| const { __glob } = require('./bin/global-variables'); | ||||
| const log = require("loguix") | ||||
|  | ||||
| var wlog = log.getInstance("Web") | ||||
|  | ||||
|  | ||||
|  | ||||
| setup() | ||||
|  | ||||
|  | ||||
| function getRouters() { | ||||
|  | ||||
|   wlog.log("Récupération de " + fs.readdirSync(__glob.ROUTES).length + " routeurs") | ||||
|    for(var route of fs.readdirSync(__glob.ROUTES)) { | ||||
|  | ||||
|       if(route == "index.js") { | ||||
| @@ -30,6 +37,7 @@ function setup() { | ||||
|   app.set('view engine', 'ejs'); | ||||
|  | ||||
|  | ||||
|  | ||||
|   app.use(express.json()); | ||||
|   app.use(express.urlencoded({ extended: false })); | ||||
|   app.use(cookieParser()); | ||||
| @@ -39,7 +47,15 @@ function setup() { | ||||
|  | ||||
|   // catch 404 and forward to error handler | ||||
|   app.use(function(req, res, next) { | ||||
|     next(createError(404)); | ||||
|     res.locals.message = "Page non trouvé"; | ||||
|     res.locals.error = { | ||||
|       "status": "404", | ||||
|       "stack": "" | ||||
|     } | ||||
|  | ||||
|     // render the error page | ||||
|     res.status(404 || 404); | ||||
|     res.render('utils/error'); | ||||
|   }); | ||||
|  | ||||
|   // error handler | ||||
| @@ -50,7 +66,7 @@ function setup() { | ||||
|  | ||||
|     // render the error page | ||||
|     res.status(err.status || 500); | ||||
|     res.render('error'); | ||||
|     res.render('utils/error'); | ||||
|   }); | ||||
|  | ||||
|  | ||||
|   | ||||
							
								
								
									
										14
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										14
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -14,7 +14,7 @@ | ||||
|         "ejs": "~2.6.1", | ||||
|         "express": "~4.16.1", | ||||
|         "http-errors": "~1.6.3", | ||||
|         "loguix": "^1.2.0", | ||||
|         "loguix": "1.4.1", | ||||
|         "nodemon": "^3.0.1" | ||||
|       } | ||||
|     }, | ||||
| @@ -446,9 +446,9 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/loguix": { | ||||
|       "version": "1.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/loguix/-/loguix-1.2.0.tgz", | ||||
|       "integrity": "sha512-6ITC4SzqPG/R/uWr0HCGYybeciWk/GV7gZYOOxkES6DGVI5FcHK0UWOf8yczt2eXg+riLyT79HJQJwh10hVqFw==" | ||||
|       "version": "1.4.1", | ||||
|       "resolved": "https://registry.npmjs.org/loguix/-/loguix-1.4.1.tgz", | ||||
|       "integrity": "sha512-lLBMc4ue37BLCIhtxBsp0PEbhOgf0DtHjYnJPoHkfUtO6T5sLy+kFwySKih0cEJgt1nmi1OMMoCEVYCqNnuODg==" | ||||
|     }, | ||||
|     "node_modules/lru-cache": { | ||||
|       "version": "6.0.0", | ||||
| @@ -1179,9 +1179,9 @@ | ||||
|       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" | ||||
|     }, | ||||
|     "loguix": { | ||||
|       "version": "1.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/loguix/-/loguix-1.2.0.tgz", | ||||
|       "integrity": "sha512-6ITC4SzqPG/R/uWr0HCGYybeciWk/GV7gZYOOxkES6DGVI5FcHK0UWOf8yczt2eXg+riLyT79HJQJwh10hVqFw==" | ||||
|       "version": "1.4.1", | ||||
|       "resolved": "https://registry.npmjs.org/loguix/-/loguix-1.4.1.tgz", | ||||
|       "integrity": "sha512-lLBMc4ue37BLCIhtxBsp0PEbhOgf0DtHjYnJPoHkfUtO6T5sLy+kFwySKih0cEJgt1nmi1OMMoCEVYCqNnuODg==" | ||||
|     }, | ||||
|     "lru-cache": { | ||||
|       "version": "6.0.0", | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "neutral", | ||||
|   "version": "0.1.0", | ||||
|   "version": "0.1.1", | ||||
|   "description": "Panel d'administration de Raphix", | ||||
|   "main": "index.js", | ||||
|   "scripts": { | ||||
| @@ -24,7 +24,7 @@ | ||||
|     "ejs": "~2.6.1", | ||||
|     "express": "~4.16.1", | ||||
|     "http-errors": "~1.6.3", | ||||
|     "loguix": "^1.2.0", | ||||
|     "loguix": "1.4.1", | ||||
|     "nodemon": "^3.0.1" | ||||
|   }, | ||||
|   "author": "Raphix", | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								public/images/FontLogo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/images/FontLogo.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 455 KiB | 
							
								
								
									
										
											BIN
										
									
								
								public/images/FormatLogo_BLACK.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/images/FormatLogo_BLACK.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 155 KiB | 
							
								
								
									
										50
									
								
								public/images/FormatLogo_BLACK.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								public/images/FormatLogo_BLACK.svg
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 481.43 481.43"> | ||||
|   <defs> | ||||
|     <style> | ||||
|       .cls-1 { | ||||
|         stroke-width: 40px; | ||||
|       } | ||||
|  | ||||
|       .cls-1, .cls-2, .cls-3, .cls-4, .cls-5 { | ||||
|         stroke: #1d1d1b; | ||||
|         stroke-miterlimit: 10; | ||||
|       } | ||||
|  | ||||
|       .cls-1, .cls-3, .cls-5 { | ||||
|         fill: none; | ||||
|       } | ||||
|  | ||||
|       .cls-2, .cls-3 { | ||||
|         stroke-width: 2px; | ||||
|       } | ||||
|  | ||||
|       .cls-2, .cls-4 { | ||||
|         fill: #1d1d1b; | ||||
|       } | ||||
|  | ||||
|       .cls-5 { | ||||
|         stroke-width: 10px; | ||||
|       } | ||||
|     </style> | ||||
|   </defs> | ||||
|   <circle class="cls-1" cx="240.78" cy="240.65" r="190.13"/> | ||||
|   <circle class="cls-1" cx="240.78" cy="240.65" r="112.42"/> | ||||
|   <circle class="cls-5" cx="240.78" cy="240.65" r="52"/> | ||||
|   <circle class="cls-5" cx="240.78" cy="240.65" r="36"/> | ||||
|   <circle class="cls-3" cx="240.78" cy="240.65" r="17.5"/> | ||||
|   <line class="cls-2" x1="240.78" y1="187.65" x2="240.78" y2="204.13"/> | ||||
|   <line class="cls-2" x1="293.78" y1="240.65" x2="276.29" y2="240.65"/> | ||||
|   <path class="cls-2" d="m228.23,252.44c-3.81,3.81-7.62,7.62-11.43,11.43"/> | ||||
|   <path class="cls-4" d="m240.05,7.01c7.99,14.68,16.4,32.59,23.67,53.57,6.88,19.85,11.25,38.14,14.07,53.93-9.15-2.76-22.44-5.68-38.61-5.59-15.41.08-28.12,2.87-37.04,5.55,2.78-15.73,7.13-34.02,14.04-53.88,7.32-21.05,15.82-38.96,23.86-53.57Z"/> | ||||
|   <path class="cls-4" d="m240.86,474.3c7.99-14.68,16.4-32.59,23.67-53.57,6.88-19.85,11.25-38.14,14.07-53.93-9.15,2.76-22.44,5.68-38.61,5.59-15.41-.08-28.12-2.87-37.04-5.55,2.78,15.73,7.13,34.02,14.04,53.88,7.32,21.05,15.82,38.96,23.86,53.57Z"/> | ||||
|   <path class="cls-4" d="m7.05,240.83c14.68-7.99,32.59-16.4,53.57-23.67,19.85-6.88,38.14-11.25,53.93-14.07-2.76,9.15-5.68,22.44-5.59,38.61.08,15.41,2.87,28.12,5.55,37.04-15.73-2.78-34.02-7.13-53.88-14.04-21.05-7.32-38.96-15.82-53.57-23.86Z"/> | ||||
|   <path class="cls-4" d="m474.27,240.61c-14.68-7.99-32.59-16.4-53.57-23.67-19.85-6.88-38.14-11.25-53.93-14.07,2.76,9.15,5.68,22.44,5.59,38.61-.08,15.41-2.87,28.12-5.55,37.04,15.73-2.78,34.02-7.13,53.88-14.04,21.05-7.32,38.96-15.82,53.57-23.86Z"/> | ||||
|   <line class="cls-2" x1="203.8" y1="240.69" x2="186.31" y2="240.69"/> | ||||
|   <line class="cls-2" x1="240.78" y1="275.18" x2="240.78" y2="291.66"/> | ||||
|   <path class="cls-2" d="m264.13,216.54c-3.94,3.94-7.87,7.87-11.81,11.81"/> | ||||
|   <g> | ||||
|     <path class="cls-2" d="m253.02,253.15c3.81,3.81,7.62,7.62,11.43,11.43"/> | ||||
|     <path class="cls-2" d="m217.12,217.25c3.94,3.94,7.87,7.87,11.81,11.81"/> | ||||
|   </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 2.4 KiB | 
							
								
								
									
										
											BIN
										
									
								
								public/images/FormatLogo_WHITE.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/images/FormatLogo_WHITE.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 101 KiB | 
							
								
								
									
										50
									
								
								public/images/FormatLogo_WHITE.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								public/images/FormatLogo_WHITE.svg
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 481.43 481.43"> | ||||
|   <defs> | ||||
|     <style> | ||||
|       .cls-1 { | ||||
|         stroke-width: 40px; | ||||
|       } | ||||
|  | ||||
|       .cls-1, .cls-2, .cls-3, .cls-4, .cls-5 { | ||||
|         stroke: #ffffff; | ||||
|         stroke-miterlimit: 10; | ||||
|       } | ||||
|  | ||||
|       .cls-1, .cls-3, .cls-5 { | ||||
|         fill: none; | ||||
|       } | ||||
|  | ||||
|       .cls-2, .cls-3 { | ||||
|         stroke-width: 2px; | ||||
|       } | ||||
|  | ||||
|       .cls-2, .cls-4 { | ||||
|         fill: #ffffff; | ||||
|       } | ||||
|  | ||||
|       .cls-5 { | ||||
|         stroke-width: 10px; | ||||
|       } | ||||
|     </style> | ||||
|   </defs> | ||||
|   <circle class="cls-1" cx="240.78" cy="240.65" r="190.13"/> | ||||
|   <circle class="cls-1" cx="240.78" cy="240.65" r="112.42"/> | ||||
|   <circle class="cls-5" cx="240.78" cy="240.65" r="52"/> | ||||
|   <circle class="cls-5" cx="240.78" cy="240.65" r="36"/> | ||||
|   <circle class="cls-3" cx="240.78" cy="240.65" r="17.5"/> | ||||
|   <line class="cls-2" x1="240.78" y1="187.65" x2="240.78" y2="204.13"/> | ||||
|   <line class="cls-2" x1="293.78" y1="240.65" x2="276.29" y2="240.65"/> | ||||
|   <path class="cls-2" d="m228.23,252.44c-3.81,3.81-7.62,7.62-11.43,11.43"/> | ||||
|   <path class="cls-4" d="m240.05,7.01c7.99,14.68,16.4,32.59,23.67,53.57,6.88,19.85,11.25,38.14,14.07,53.93-9.15-2.76-22.44-5.68-38.61-5.59-15.41.08-28.12,2.87-37.04,5.55,2.78-15.73,7.13-34.02,14.04-53.88,7.32-21.05,15.82-38.96,23.86-53.57Z"/> | ||||
|   <path class="cls-4" d="m240.86,474.3c7.99-14.68,16.4-32.59,23.67-53.57,6.88-19.85,11.25-38.14,14.07-53.93-9.15,2.76-22.44,5.68-38.61,5.59-15.41-.08-28.12-2.87-37.04-5.55,2.78,15.73,7.13,34.02,14.04,53.88,7.32,21.05,15.82,38.96,23.86,53.57Z"/> | ||||
|   <path class="cls-4" d="m7.05,240.83c14.68-7.99,32.59-16.4,53.57-23.67,19.85-6.88,38.14-11.25,53.93-14.07-2.76,9.15-5.68,22.44-5.59,38.61.08,15.41,2.87,28.12,5.55,37.04-15.73-2.78-34.02-7.13-53.88-14.04-21.05-7.32-38.96-15.82-53.57-23.86Z"/> | ||||
|   <path class="cls-4" d="m474.27,240.61c-14.68-7.99-32.59-16.4-53.57-23.67-19.85-6.88-38.14-11.25-53.93-14.07,2.76,9.15,5.68,22.44,5.59,38.61-.08,15.41-2.87,28.12-5.55,37.04,15.73-2.78,34.02-7.13,53.88-14.04,21.05-7.32,38.96-15.82,53.57-23.86Z"/> | ||||
|   <line class="cls-2" x1="203.8" y1="240.69" x2="186.31" y2="240.69"/> | ||||
|   <line class="cls-2" x1="240.78" y1="275.18" x2="240.78" y2="291.66"/> | ||||
|   <path class="cls-2" d="m264.13,216.54c-3.94,3.94-7.87,7.87-11.81,11.81"/> | ||||
|   <g> | ||||
|     <path class="cls-2" d="m253.02,253.15c3.81,3.81,7.62,7.62,11.43,11.43"/> | ||||
|     <path class="cls-2" d="m217.12,217.25c3.94,3.94,7.87,7.87,11.81,11.81"/> | ||||
|   </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 2.4 KiB | 
							
								
								
									
										35
									
								
								public/javascripts/basics.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								public/javascripts/basics.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | ||||
| // Get Document ID | ||||
|  | ||||
| function getID(string) { | ||||
|  | ||||
|     return document.getElementById(string) | ||||
| } | ||||
|  | ||||
| class InfoPop { | ||||
|     constructor(name) { | ||||
|         this.name = name | ||||
|         this.element = getID(this.name) | ||||
|         this.element.style.fontSize = "14px" | ||||
|  | ||||
|     } | ||||
|  | ||||
|     clear() { | ||||
|  | ||||
|         this.element.innerHTML = "" | ||||
|     } | ||||
|      | ||||
|     err(text) { | ||||
|       | ||||
|         this.element.classList.add("yellow") | ||||
|         this.element.innerHTML = "<i class='fa fa-warning'></i> " + text | ||||
|  | ||||
|     } | ||||
|  | ||||
|     info(text) { | ||||
|     | ||||
|         this.element.classList.remove("yellow") | ||||
|  | ||||
|         this.element.innerHTML = "<i class='fa fa-info-circle'></i> " + text | ||||
|     } | ||||
|  | ||||
| } | ||||
							
								
								
									
										22
									
								
								public/javascripts/loginscript.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								public/javascripts/loginscript.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| const username = getID("username") | ||||
| const password = getID("password") | ||||
| const submit = getID("submit") | ||||
|  | ||||
| const loginInfo = new InfoPop("login-info") | ||||
|  | ||||
| loginInfo.clear() | ||||
|  | ||||
| submit.addEventListener("click", () => { | ||||
|  | ||||
|     if(!username.value) { | ||||
|  | ||||
|         loginInfo.err("Le nom d'utilisateur est nécéssaire pour se connecter !") | ||||
|  | ||||
|     } else if(!password.value) { | ||||
|  | ||||
|         loginInfo.err("Le mot de passe est nécéssaire pour se connecter !") | ||||
|     } else { | ||||
|  | ||||
|         loginInfo.clear() | ||||
|     } | ||||
| }) | ||||
| @@ -1,11 +1,17 @@ | ||||
| @import url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap'); | ||||
| @import url('https://fonts.googleapis.com/css2?family=Roboto:wght@300&display=swap'); | ||||
|  | ||||
| body { | ||||
|   padding: 2%; | ||||
|   background-color: #323031; | ||||
|   background: linear-gradient(120deg, #323031 40%, rgba(241,0,0,1) 100%); | ||||
|   color: white; | ||||
|   font-size: 1vw; | ||||
|   font-size: 20px; | ||||
|   font-family: 'Roboto', sans-serif !important; | ||||
|    | ||||
| } | ||||
|  | ||||
| html { | ||||
|   min-height: 100%; | ||||
|   margin: 0; | ||||
| } | ||||
|  | ||||
| /*Button*/ | ||||
| @@ -19,7 +25,7 @@ body { | ||||
|   color: currentColor; | ||||
|   padding: 0.5vw; | ||||
|   transition: 0.2s; | ||||
|    | ||||
|   cursor: pointer; | ||||
| } | ||||
|  | ||||
| .btn span { | ||||
| @@ -48,20 +54,27 @@ body { | ||||
|   | ||||
| } | ||||
|  | ||||
| .btn span a { | ||||
|   text-decoration: none; | ||||
| } | ||||
|  | ||||
| /* Miniaturiez Button */ | ||||
|  | ||||
| .min { | ||||
|  | ||||
|   width: 2vw !important; | ||||
|   height: 2vw !important; | ||||
|   width: 40px !important; | ||||
|   height: 40px !important; | ||||
|   border-radius: 100% !important; | ||||
|   font-size: 1vw !important; | ||||
|   display: flex; | ||||
|   justify-content: center; | ||||
|   align-items: center; | ||||
|   transition: 0.2s; | ||||
|   padding: 0 !important; | ||||
| } | ||||
|    | ||||
| .min span { | ||||
|  | ||||
|   font-size: 20px !important; | ||||
|  | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -69,7 +82,7 @@ body { | ||||
|  | ||||
| .red { | ||||
|  | ||||
|   color: rgb(255, 63, 63) !important;  | ||||
|   color: #f01000!important;  | ||||
| } | ||||
|  | ||||
| .blue { | ||||
| @@ -85,4 +98,185 @@ body { | ||||
| .green { | ||||
|  | ||||
|   color: rgb(64, 248, 64) !important; | ||||
| } | ||||
|  | ||||
| /*Balise Properties*/ | ||||
|  | ||||
| code { | ||||
|  | ||||
|   background-color: #3D3B3C; | ||||
|   padding: 0.3vw; | ||||
|   border-radius: 0.5vw; | ||||
| } | ||||
|  | ||||
| p { | ||||
|   margin-block-start: 0.5em !important; | ||||
|   margin-block-end: 0.5em !important; | ||||
| } | ||||
|  | ||||
| a { | ||||
|   color: currentColor; | ||||
| } | ||||
|  | ||||
| /*Lists*/ | ||||
|  | ||||
| .center { | ||||
|  | ||||
|   text-align: center !important; | ||||
|    | ||||
|  | ||||
| } | ||||
|  | ||||
| .col { | ||||
|  | ||||
|   display: flex; | ||||
|   flex-direction: column; | ||||
|   gap: 2vw; | ||||
|  | ||||
| } | ||||
|  | ||||
| @media (max-width: 500px) { | ||||
|  | ||||
|   .row { | ||||
|  | ||||
|    | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     gap: 2vw; | ||||
|    | ||||
|   } | ||||
|    | ||||
| }  | ||||
|  | ||||
| @media (min-width: 500px) { | ||||
|  | ||||
| .row { | ||||
|  | ||||
|    | ||||
|   display: flex; | ||||
|   flex-direction: row; | ||||
|   gap: 2vw; | ||||
|    | ||||
| } | ||||
|  | ||||
| } | ||||
|  | ||||
| /* Fields */ | ||||
|  | ||||
| .field { | ||||
|  | ||||
|   width: fit-content; | ||||
|   border-radius: 5px; | ||||
|   padding-bottom: 0.3vw; | ||||
|   padding-top: 0.3vw; | ||||
|   padding-left: 0.5vw; | ||||
|   border: 1px solid white; | ||||
|   background-color: transparent; | ||||
|   transition: 0.2s; | ||||
|   color: white; | ||||
| } | ||||
|  | ||||
| .field:focus { | ||||
|   color: black; | ||||
|   outline: none; | ||||
|   background-color: white; | ||||
|   box-shadow: 0px 0px 8px #C1BDB3 ; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| /* Logo */ | ||||
|  | ||||
| @media (max-width: 640px) { | ||||
|  | ||||
|   .logo { | ||||
|  | ||||
|     font-family: 'Gunship', sans-serif; | ||||
|     text-shadow: 0px 0px 10px #ffffff; | ||||
|     font-size: 50px; | ||||
|     display: flex; | ||||
|     justify-content: center; | ||||
|     text-align: center; | ||||
|     flex-direction: column; | ||||
|     align-items: center; | ||||
|   } | ||||
|    | ||||
|   .logo-img { | ||||
|    | ||||
|     width: 70px; | ||||
|     margin-right: 10px; | ||||
|   } | ||||
|    | ||||
|    | ||||
| }  | ||||
|  | ||||
| @media (min-width: 640px) { | ||||
|  | ||||
|   .logo { | ||||
|  | ||||
|     font-family: 'Gunship', sans-serif; | ||||
|     text-shadow: 0px 0px 10px #ffffff; | ||||
|     font-size: 50px; | ||||
|     display: flex; | ||||
|  | ||||
|     justify-content: center; | ||||
|     text-align: center; | ||||
|     align-items: center; | ||||
|   } | ||||
|    | ||||
|   .logo-img { | ||||
|    | ||||
|     width: 70px; | ||||
|     margin-right: 10px; | ||||
|   } | ||||
|    | ||||
|  | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| /* Form Box */ | ||||
|  | ||||
|  | ||||
| .form-box { | ||||
|  | ||||
|   width: 500px; | ||||
|   height: 400px; | ||||
|   border-radius: 0.5vw; | ||||
|   display: flex; | ||||
|   padding: 2%; | ||||
|   flex-direction: column; | ||||
|   justify-content: space-between; | ||||
|   background-color: #605e5863; | ||||
| } | ||||
|  | ||||
| .m-align { | ||||
|  | ||||
|     margin-right: auto !important; | ||||
|     margin-left: auto !important; | ||||
| } | ||||
|  | ||||
| .t-center { | ||||
|  | ||||
|   text-align: center; | ||||
| } | ||||
|  | ||||
|  | ||||
| /* LOGIN Specs */ | ||||
|  | ||||
| .LOG_btn { | ||||
|  | ||||
|   margin-top: 2%; | ||||
|   margin-bottom: 2%; | ||||
| } | ||||
|  | ||||
| .LOG_body { | ||||
|  | ||||
|     display: flex; | ||||
|     justify-content: center; | ||||
|     align-items: center; | ||||
|     height: 100vh; | ||||
|     padding: 0 !important; | ||||
|     margin: 0 !important; | ||||
| } | ||||
							
								
								
									
										9
									
								
								routes/login.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								routes/login.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| var express = require('express'); | ||||
| var router = express.Router(); | ||||
|  | ||||
| /* GET home page. */ | ||||
| router.get('/', function(req, res, next) { | ||||
|   res.render('login'); | ||||
| }); | ||||
|  | ||||
| module.exports = router; | ||||
| @@ -3,7 +3,7 @@ var router = express.Router(); | ||||
|  | ||||
| /* GET home page. */ | ||||
| router.get('/', function(req, res, next) { | ||||
|   res.render('stylepage'); | ||||
|   res.render('utils/stylepage'); | ||||
| }); | ||||
|  | ||||
| module.exports = router; | ||||
|   | ||||
							
								
								
									
										28
									
								
								views/login.ejs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								views/login.ejs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| <!DOCTYPE html> | ||||
| <html> | ||||
|   <head> | ||||
|     <title>Neutral</title> | ||||
|     <link rel='stylesheet' href='/stylesheets/style.css' /> | ||||
|   </head> | ||||
|   <body class="LOG_body"> | ||||
|     <div class=" form-box m-align t-center"> | ||||
|          | ||||
|         <div class="logo"><img class="logo-img" src="/images/FormatLogo_WHITE.svg"><p>Neutral</p></div> | ||||
|         <div> | ||||
|           <p>Nom d'utilisateur</p> | ||||
|           <input id="username" type="text" class="field  m-align"> | ||||
|         </div> | ||||
|         <div> | ||||
|           <p>Mot de passe</p> | ||||
|           <input id="password" type="password" class="field  m-align"> | ||||
|         </div> | ||||
|         <p id="login-info"></p> | ||||
|         <button id="submit" class="btn green m-align LOG_btn"><span><i class="fa-solid fa-right-to-bracket"></i> Connexion</span></button> | ||||
|     </div> | ||||
|      | ||||
|     <script defer="" src="https://use.fontawesome.com/releases/v6.4.2/js/all.js" crossorigin="anonymous"></script> | ||||
|     <script src="/javascripts/basics.js"></script> | ||||
|     <script src="/javascripts/loginscript.js"></script> | ||||
|   | ||||
|   </body> | ||||
| </html> | ||||
| @@ -1,70 +0,0 @@ | ||||
| <!DOCTYPE html> | ||||
| <html> | ||||
|   <head> | ||||
|     <title>Neutral</title> | ||||
|     <link rel='stylesheet' href='/stylesheets/style.css' /> | ||||
|   </head> | ||||
|   <body> | ||||
|     <h1>Neutral - Style Page</h1> | ||||
|     <p>Welcome to Neutral</p> | ||||
|  | ||||
|     <p>Police : 'Roboto', sans-serif </p> | ||||
|     <style> | ||||
|       .box-color { | ||||
|  | ||||
|         width: 5vw; | ||||
|         height: 5vw; | ||||
|         transition: 0.2s; | ||||
|         border: 1px solid; | ||||
|       } | ||||
|  | ||||
|       .box-color:hover { | ||||
|  | ||||
|         transform: scale(1.1); | ||||
|       } | ||||
|  | ||||
|       .box-color:active { | ||||
|  | ||||
|         transform: scale(1); | ||||
|         color: rgb(58, 255, 3); | ||||
|       } | ||||
|  | ||||
|  | ||||
|       button { | ||||
|         width: fit-content ; | ||||
|       } | ||||
|  | ||||
|       .list-items { | ||||
|  | ||||
|         display: flex; | ||||
|         flex-direction: column; | ||||
|         gap: 2vw; | ||||
|       } | ||||
|     </style> | ||||
|  | ||||
|     <div class="list-items"> | ||||
|     <button class="btn red"><span>Error Button</span></button> | ||||
|     <button class="btn blue "><span>Info Button</span></button> | ||||
|     <button class="btn yellow"><span>Warning Button</span></button> | ||||
|     <button class="btn green"><span>Confirm Button</span></button> | ||||
|     <button class="btn"><span>Default Button</span></button> | ||||
|     <button class="btn min red"><span><i class="fa fa-x"></i></span></button> | ||||
|     <button class="btn min blue"><span><i class="fa fa-info"></i></span></button> | ||||
|     <button class="btn min"><span><i class="fa fa-def"></i></span></button> | ||||
|     <div onclick="copyToClipboard('#323031')" style='background-color: #323031;' class="box-color"><p style="text-align: center;">#323031</p></div> | ||||
|     <div onclick="copyToClipboard('#3D3B3C')" style='background-color: #3D3B3C;' class="box-color"><p style="text-align: center;">#3D3B3C</p></div> | ||||
|     <div onclick="copyToClipboard('#7F7979')" style='background-color: #7F7979;' class="box-color"><p style="text-align: center;">#7F7979</p></div> | ||||
|     <div onclick="copyToClipboard('#C1BDB3')" style='background-color: #C1BDB3;' class="box-color"><p style="text-align: center;">#C1BDB3</p></div> | ||||
|     <div onclick="copyToClipboard('#5f5b6b')" style='background-color: #5f5b6b;' class="box-color"><p style="text-align: center;">#5F5B6B</p></div> | ||||
|     </div> | ||||
|  | ||||
|     <script> | ||||
|       function copyToClipboard(text) { | ||||
|  | ||||
|         navigator.clipboard.writeText(text) | ||||
|       } | ||||
|        | ||||
|     </script> | ||||
|     <script defer="" src="https://use.fontawesome.com/releases/v6.4.2/js/all.js" crossorigin="anonymous"></script> | ||||
|   </body> | ||||
| </html> | ||||
| @@ -16,34 +16,17 @@ | ||||
|             border-radius: 1vw; | ||||
|             padding: 2%; | ||||
|         } | ||||
| 
 | ||||
|         button { | ||||
|             color: red; | ||||
|             background-color: transparent; | ||||
|             border-radius: 1vw; | ||||
|             border-color: red; | ||||
|             border-style: solid; | ||||
|             padding: 10px; | ||||
|             transition: all 0.2s ease 0s; | ||||
|         } | ||||
| 
 | ||||
|         button:hover { | ||||
| 
 | ||||
|             color: white; | ||||
|             background-color: red; | ||||
|             cursor: pointer; | ||||
|         } | ||||
|     </style> | ||||
|   </head> | ||||
|   <body> | ||||
|     <div> | ||||
|         <h1>Erreur</h1> | ||||
|         <h1>Erreur  <%= error.status %></h1> | ||||
|         <h2><%= message %> - <%= error.status %></h1> | ||||
|         <pre><%= error.stack %></pre> | ||||
| 
 | ||||
|     </div> | ||||
|     <br> | ||||
|    <a href="/"><button>Retourner sur le panel</button></a> | ||||
|    <a href="/"><button class="btn red"><span>Retourner sur le panel</span></button></a> | ||||
|   </body> | ||||
| </html> | ||||
| 
 | ||||
							
								
								
									
										75
									
								
								views/utils/stylepage.ejs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								views/utils/stylepage.ejs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,75 @@ | ||||
| <!DOCTYPE html> | ||||
| <html> | ||||
|   <head> | ||||
|     <title>Neutral</title> | ||||
|     <link rel='stylesheet' href='/stylesheets/style.css' /> | ||||
|   </head> | ||||
|   <body> | ||||
|     <h1>Neutral - Page de style</h1> | ||||
|     <p>Cette page est dédiée au développement et n'est pas en relation avec le Panel Neutral.</p> | ||||
|     <a href="/"><button class="btn red"><span>Revenir sur le panel</span></button></a> | ||||
|     <hr> | ||||
|     <p>Police : <code>'Roboto', sans-serif</code></p> | ||||
|     <p>Liens : <a href="/stylepage">https://neutral.raphix.fr/stylepage</a></p> | ||||
|     <hr> | ||||
|     <br> | ||||
|     <style> | ||||
|       .box-color { | ||||
|  | ||||
|         width: 100px; | ||||
|         height: 100px; | ||||
|         transition: 0.2s; | ||||
|         border: 1px solid; | ||||
|       } | ||||
|  | ||||
|       .box-color:hover { | ||||
|  | ||||
|         transform: scale(1.1); | ||||
|       } | ||||
|     | ||||
|       .box-color:active { | ||||
|  | ||||
|         transform: scale(1); | ||||
|         color: rgb(58, 255, 3); | ||||
|       } | ||||
|  | ||||
|  | ||||
|       button { | ||||
|         width: fit-content ; | ||||
|       } | ||||
|  | ||||
|        | ||||
|     </style> | ||||
|  | ||||
|     <div class="col"> | ||||
|     <p>Classe : <code>btn</code></p> | ||||
|     <div class="row"> | ||||
|       <button class="btn red"><span>Error Button</span></button> | ||||
|       <button class="btn blue "><span>Info Button</span></button> | ||||
|       <button class="btn yellow"><span>Warning Button</span></button> | ||||
|       <button class="btn green"><span>Confirm Button</span></button> | ||||
|       <button class="btn"><span>Default Button</span></button> | ||||
|     </div> | ||||
|     <p>Classe : <code>btn min</code></p> | ||||
|     <div class="row"> | ||||
|       <button class="btn min red"><span><i class="fa fa-xmark"></i></span></button> | ||||
|       <button class="btn min blue"><span><i class="fa fa-info"></i></span></button> | ||||
|       <button class="btn min"><span><i class="fa fa-def"></i></span></button> | ||||
|     </div> | ||||
|     <div class="row"> | ||||
|       <div onclick="copyToClipboard('#323031')" style='background-color: #323031;' class="box-color"><p style="text-align: center;">#323031</p></div> | ||||
|       <div onclick="copyToClipboard('#f10000')" style='background-color: #f10000;' class="box-color"><p style="text-align: center;">#f10000</p></div> | ||||
|       <div onclick="copyToClipboard('#605e5863')" style='background-color: #605e5863;' class="box-color"><p style="text-align: center;">#605e5863</p></div> | ||||
|     </div> | ||||
|     <p>Classe : <code>field</code></p> | ||||
|     <input type="text" class="field"> | ||||
|      | ||||
|     <script> | ||||
|       function copyToClipboard(text) { | ||||
|         navigator.clipboard.writeText(text) | ||||
|       } | ||||
|        | ||||
|     </script> | ||||
|     <script defer="" src="https://use.fontawesome.com/releases/v6.4.2/js/all.js" crossorigin="anonymous"></script> | ||||
|   </body> | ||||
| </html> | ||||
		Reference in New Issue
	
	Block a user