From 4223964b8a278249ceefc10958518d98671db192 Mon Sep 17 00:00:00 2001 From: Quentin Rouland Date: Tue, 7 Mar 2017 06:03:48 +0100 Subject: [PATCH] TG-33 gestion login cas --- backend/app/api/loginAPI.py | 17 ++++++----------- backend/app/config.py.example | 6 ++++++ backend/app/core.py | 11 ++++++++++- backend/app/urls.py | 2 +- 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/backend/app/api/loginAPI.py b/backend/app/api/loginAPI.py index d35681c..0c049c5 100644 --- a/backend/app/api/loginAPI.py +++ b/backend/app/api/loginAPI.py @@ -2,6 +2,7 @@ from flask import session from flask_restful import Resource from flask_restful.reqparse import RequestParser +from app.core import cas from app.model import * @@ -10,13 +11,8 @@ class LoginAPI(Resource): Login Api Resource """ - def post(self): - parser = RequestParser() - parser.add_argument('login', required=True, help="Login cannot be blank!") - parser.add_argument('password', required=True, help="Password cannot be blank!") - args = parser.parse_args() - - userInfo = self.getUserInfoFromCAS(args['login'], args['password']) + def get(self): + userInfo = self.getUserInfoFromCAS() if userInfo is not None: user = getUser(login=userInfo['login']) @@ -32,9 +28,8 @@ class LoginAPI(Resource): session['user'] = None return {'AUTH_RESULT': 'OK'}, 200 - def getUserInfoFromCAS(self, login, password): - # TODO : A implémenter - if (login == "admin" or login == "toto") and password == login: - return {"login": login} + def getUserInfoFromCAS(self): + if cas.username is not None: + return {"login": cas.username} else: return None diff --git a/backend/app/config.py.example b/backend/app/config.py.example index c8b8c73..7319e4c 100644 --- a/backend/app/config.py.example +++ b/backend/app/config.py.example @@ -26,6 +26,12 @@ class Config: BUNDLE_ERRORS = True SESSION_COOKIE_SECURE = True SESSION_VALIDITY_DURATION_WITHOUT_ACTIVITY_MIN = 20 + CAS_SERVER = "http://localhost:8088" + CAS_AFTER_LOGIN = "after_login" + CAS_LOGIN_ROUTE = "/login" + CAS_LOGOUT_ROUTE = "/logout" + CAS_VALIDATE_ROUTE = "/serviceValidate" + class Prod(Config): diff --git a/backend/app/core.py b/backend/app/core.py index 3215e9f..39dab01 100644 --- a/backend/app/core.py +++ b/backend/app/core.py @@ -1,8 +1,10 @@ import importlib from datetime import timedelta +from flask_cas import CAS + from app.config import Config -from flask import Flask, session +from flask import Flask, session, redirect from flask_restful import Api from flask_sqlalchemy import SQLAlchemy from sqlalchemy import MetaData @@ -32,5 +34,12 @@ meta = MetaData(engine, True) # RestFul Flask api = Api(app) +# Cas Flask +cas = CAS(app) + +@app.route('/redirect') +def after_login(): + return redirect("/api/login") + # import api resources importlib.import_module("app.urls") diff --git a/backend/app/urls.py b/backend/app/urls.py index 3ac6771..e72d477 100644 --- a/backend/app/urls.py +++ b/backend/app/urls.py @@ -4,4 +4,4 @@ from app.core import api # Some Api resource api.add_resource(SomeApi, '/api/someapi', '/api/someapi/') -api.add_resource(LoginAPI, '/api/login', '/api/login') +api.add_resource(LoginAPI, '/api/login')