Explorar o código

Made docker setup compatible with live server.

KrisVos130 %!s(int64=8) %!d(string=hai) anos
pai
achega
59d6328c4f

+ 4 - 0
backend/config/template.json

@@ -32,5 +32,9 @@
 	},
   	"mongo": {
 	  	"url": "mongodb://mongo:27017/musare"
+	},
+  	"cookie": {
+	  	"domain": "",
+	  	"secure": false
 	}
 }

+ 6 - 2
backend/logic/app.js

@@ -77,7 +77,9 @@ const lib = {
 									let sessionId = utils.guid();
 									cache.hset('sessions', sessionId, cache.schemas.session(sessionId, user._id), err => {
 										if (err) return redirectOnErr(res, err.message);
-										res.cookie('SID', sessionId);
+										let date = new Date();
+										date.setTime(new Date().getTime() + (2 * 365 * 24 * 60 * 60 * 1000));
+										res.cookie('SID', sessionId, {expires: date, secure: config.get("cookie.secure"), path: "/", domain: config.get("cookie.domain")});
 										res.redirect(`${config.get('domain')}/`);
 									});
 								});
@@ -115,7 +117,9 @@ const lib = {
 												let sessionId = utils.guid();
 												cache.hset('sessions', sessionId, cache.schemas.session(sessionId, user._id), err => {
 													if (err) return redirectOnErr(res, err.message);
-													res.cookie('SID', sessionId);
+													let date = new Date();
+													date.setTime(new Date().getTime() + (2 * 365 * 24 * 60 * 60 * 1000));
+													res.cookie('SID', sessionId, {expires: date, secure: config.get("cookie.secure"), path: "/", domain: config.get("cookie.domain")});
 													res.redirect(`${config.get('domain')}/`);
 												});
 											});

+ 30 - 0
docker-compose-production.yml

@@ -0,0 +1,30 @@
+version: '2'
+services:
+  backend:
+    build: ./backend
+    ports:
+    - "8081:8081"
+    volumes:
+    - ./backend:/opt/app
+    links:
+    - mongo
+    - redis
+    environment:
+    - NGINX_PORT=81
+  frontend:
+    build: ./frontend
+    ports:
+    - "81:81"
+    volumes:
+    - ./frontend:/opt/app
+  mongo:
+    image: mongo
+    ports:
+    - "27017:27017"
+  mongoclient:
+    image: mongoclient/mongoclient
+    ports:
+    - "3000:3000"
+  redis:
+    image: redis
+    command: "--notify-keyspace-events Ex"

+ 2 - 0
docker-compose.yml

@@ -9,6 +9,8 @@ services:
     links:
     - mongo
     - redis
+    environment:
+    - NGINX_PORT=80
   frontend:
     build: ./frontend
     ports:

+ 65 - 61
frontend/App.vue

@@ -91,10 +91,12 @@
 						Toast.methods.addToast(`You have successfully registered.`, 4000);
 						setTimeout(() => {
 							if (result.SID) {
-								let date = new Date();
-								date.setTime(new Date().getTime() + (2 * 365 * 24 * 60 * 60 * 1000));
-								document.cookie = `SID=${result.SID}; expires=${date.toGMTString()}; path=/`;
-								location.reload();
+								lofig.get('cookie', cookie => {
+									let date = new Date();
+									date.setTime(new Date().getTime() + (2 * 365 * 24 * 60 * 60 * 1000));
+									document.cookie = `SID=${result.SID}; expires=${date.toGMTString()}; domain=${cookie.domain}; secure=${cookie.secure}; path=/`;
+									location.reload();
+								}
 							} else _this.$router.go('/login');
 						}, 4000);
 					} else Toast.methods.addToast(result.message, 8000);
@@ -105,12 +107,14 @@
 				let _this = this;
 				this.socket.emit('users.login', email, password, result => {
 					if (result.status === 'success') {
-						let date = new Date();
-						date.setTime(new Date().getTime() + (2 * 365 * 24 * 60 * 60 * 1000));
-						document.cookie = `SID=${result.SID}; expires=${date.toGMTString()}; path=/`;
-						Toast.methods.addToast(`You have been successfully logged in`, 2000);
-						_this.$router.go('/');
-						location.reload();
+						lofig.get('cookie', cookie => {
+							let date = new Date();
+							date.setTime(new Date().getTime() + (2 * 365 * 24 * 60 * 60 * 1000));
+							document.cookie = `SID=${result.SID}; expires=${date.toGMTString()}; domain=${cookie.domain}; secure=${cookie.secure}; path=/`;
+							Toast.methods.addToast(`You have been successfully logged in`, 2000);
+							_this.$router.go('/');
+							location.reload();
+						});
 					} else Toast.methods.addToast(result.message, 2000);
 				});
 			},
@@ -164,72 +168,72 @@
 
 	.tooltip {
 		position: relative;
-		
-		&:after {
-			position: absolute;
-			min-width: 80px;
-			margin-left: -75%;
-			text-align: center;
-			padding: 7.5px 6px;
-			border-radius: 2px;
-			background-color: #323232;
-			font-size: .9em;
-			color: #fff;
-			content: attr(data-tooltip);
-			opacity: 0;
-			transition: all .2s ease-in-out .1s;
-			visibility: hidden;
-		}
-		
-		&:hover:after {
-			opacity: 1;
-			visibility: visible;
-		}
+
+	&:after {
+		 position: absolute;
+		 min-width: 80px;
+		 margin-left: -75%;
+		 text-align: center;
+		 padding: 7.5px 6px;
+		 border-radius: 2px;
+		 background-color: #323232;
+		 font-size: .9em;
+		 color: #fff;
+		 content: attr(data-tooltip);
+		 opacity: 0;
+		 transition: all .2s ease-in-out .1s;
+		 visibility: hidden;
+	 }
+
+	&:hover:after {
+		 opacity: 1;
+		 visibility: visible;
+	 }
 	}
 
 	.tooltip-top {
-		&:after {
-			bottom: 150%;
-		}
+	&:after {
+		 bottom: 150%;
+	 }
 
-		&:hover {
-			&:after { bottom: 120%; }
-		}
+	&:hover {
+	&:after { bottom: 120%; }
+	}
 	}
 
 
 	.tooltip-bottom {
-		&:after {
-			top: 155%;
-		}
+	&:after {
+		 top: 155%;
+	 }
 
-		&:hover {
-			&:after { top: 125%; }
-		}
+	&:hover {
+	&:after { top: 125%; }
+	}
 	}
 
 	.tooltip-left {
-		&:after {
-			bottom: -10px;
-			right: 130%;
-			min-width: 100px;
-		}
-
-		&:hover {
-			&:after { right: 110%; }
-		}
+	&:after {
+		 bottom: -10px;
+		 right: 130%;
+		 min-width: 100px;
+	 }
+
+	&:hover {
+	&:after { right: 110%; }
+	}
 	}
 
 	.tooltip-right {
-		&:after {
-			bottom: -10px;
-			left: 190%;
-			min-width: 100px;
-		}
-
-		&:hover {
-			&:after { left: 200%; }
-		}
+	&:after {
+		 bottom: -10px;
+		 left: 190%;
+		 min-width: 100px;
+	 }
+
+	&:hover {
+	&:after { left: 200%; }
+	}
 	}
 
 	.button:focus, .button:active { border-color: #dbdbdb !important; }

+ 5 - 4
frontend/build/config/template.json

@@ -1,9 +1,10 @@
 {
-	"socket": {
-		"url": ""
-	},
 	"recaptcha": {
 		"key": ""
 	},
-  	"serverDomain": ""
+  	"serverDomain": "",
+  	"cookie": {
+		"domain": "",
+		"secure": false
+	}
 }

+ 1 - 1
frontend/nginx.conf

@@ -13,7 +13,7 @@ http {
     keepalive_timeout  65;
 
     server {
-        listen       80;
+        listen       ${NGINX_PORT};
         server_name  localhost;
 
         location / {