def test_user(self): user = User() user.name = "alice" user.screen_name = "alice" user.email = "*****@*****.**" user.set_password("alice_s_password_1234") user.create() self.assertTrue(User.password_auth("alice", "alice_s_password_1234")) jwt = user.get_jwt() self.assertEqual(User.check_jwt(jwt), user)
def auth(project, args): from mitama.models import User user = args.user password = args.password if password == "": password = getpass("Password:"******"Authentication failed") sys.exit(1)
def login(self, request): template = self.view.get_template("login.html") if request.method == "POST": try: form = LoginForm(request.post()) result = User.password_auth(form["screen_name"], form["password"]) sess = request.session() sess["jwt_token"] = result.get_jwt() redirect_to = request.query.get("redirect_to", ["/"])[0] return Response.redirect(redirect_to) except Exception as err: return Response.render(template, {"error": err}, status=401) return Response.render(template, status=401)
def process(self, request, handler): try: if "HTTP_AUTHORIZATION" in request.headers: name, token = request.headers["HTTP_AUTHORIZATION"].split(" ") login, password = base64.b64decode(token).decode().split(":") request.user = User.password_auth(login, password) else: return Response( status=401, reason="Authorization Required", headers={ "WWW-Authenticate": "Basic realm=\"mitama authorization\"" } ) except Exception as err: print(err) return Response( status=401, reason="Authorization Required", headers={ "WWW-Authenticate": "Basic realm=\"mitama authorization\"" } ) return handler(request)