prepare route protection
This commit is contained in:
		| @@ -21,6 +21,11 @@ class Controller(ABC): | |||||||
|             content = content.encode() |             content = content.encode() | ||||||
|         self.handler.wfile.write(content) |         self.handler.wfile.write(content) | ||||||
|  |  | ||||||
|  |     def send_redirect(self, location, code=303): | ||||||
|  |         self.handler.send_response(code) | ||||||
|  |         self.handler.send_header("Location", location) | ||||||
|  |         self.handler.end_headers() | ||||||
|  |  | ||||||
|     def handle_request(self): |     def handle_request(self): | ||||||
|         action = "indexAction" |         action = "indexAction" | ||||||
|         if "action" in self.options: |         if "action" in self.options: | ||||||
|   | |||||||
							
								
								
									
										9
									
								
								owrx/controllers/session.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								owrx/controllers/session.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | from . import Controller | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class SessionController(Controller): | ||||||
|  |     def loginAction(self): | ||||||
|  |         self.send_response("login happening here") | ||||||
|  |  | ||||||
|  |     def logoutAction(self): | ||||||
|  |         self.send_redirect("logout happening here") | ||||||
							
								
								
									
										21
									
								
								owrx/controllers/settings.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								owrx/controllers/settings.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | |||||||
|  | from . import Controller | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Authentication(object): | ||||||
|  |     def isAuthenticated(self, request): | ||||||
|  |         return False | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class SettingsController(Controller): | ||||||
|  |     def __init__(self, handler, request, options): | ||||||
|  |         self.authentication = Authentication() | ||||||
|  |         super().__init__(handler, request, options) | ||||||
|  |  | ||||||
|  |     def handle_request(self): | ||||||
|  |         if self.authentication.isAuthenticated(self.request): | ||||||
|  |             super().handle_request() | ||||||
|  |         else: | ||||||
|  |             self.send_redirect("/login") | ||||||
|  |  | ||||||
|  |     def indexAction(self): | ||||||
|  |         self.send_response("actual content here") | ||||||
| @@ -11,6 +11,8 @@ from owrx.controllers.assets import ( | |||||||
| from owrx.controllers.websocket import WebSocketController | from owrx.controllers.websocket import WebSocketController | ||||||
| from owrx.controllers.api import ApiController | from owrx.controllers.api import ApiController | ||||||
| from owrx.controllers.metrics import MetricsController | from owrx.controllers.metrics import MetricsController | ||||||
|  | from owrx.controllers.settings import SettingsController | ||||||
|  | from owrx.controllers.session import SessionController | ||||||
| from http.server import BaseHTTPRequestHandler | from http.server import BaseHTTPRequestHandler | ||||||
| from urllib.parse import urlparse, parse_qs | from urllib.parse import urlparse, parse_qs | ||||||
| import re | import re | ||||||
| @@ -91,6 +93,9 @@ class Router(object): | |||||||
|             StaticRoute("/features", FeatureController), |             StaticRoute("/features", FeatureController), | ||||||
|             StaticRoute("/api/features", ApiController), |             StaticRoute("/api/features", ApiController), | ||||||
|             StaticRoute("/metrics", MetricsController), |             StaticRoute("/metrics", MetricsController), | ||||||
|  |             StaticRoute("/settings", SettingsController), | ||||||
|  |             StaticRoute("/login", SessionController, {"action": "loginAction"}), | ||||||
|  |             StaticRoute("/logout", SessionController, {"action": "logoutAction"}), | ||||||
|         ] |         ] | ||||||
|  |  | ||||||
|     def find_route(self, request): |     def find_route(self, request): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jakob Ketterl
					Jakob Ketterl