def finish_login(request, destination, params): do_logout(request) server = request.app.settings.servers[int(params['server'])] if params['type'] == 'cosignproxy': name = request.environ['COSIGN_SERVICE'] fladgejt_params = dict(type='cosignproxy', cosign_proxy=request.app.settings.cosign_proxy, cosign_service=(name, request.cookies[name])) else: fladgejt_params = params try: client = create_client(server, fladgejt_params) except Exception: return sessions.set_cookie( request, None, app_response(request, server=int(params['server']), type=params['type'], error=traceback.format_exc(), destination=destination)) csrf_token = sessions.generate_key() session = dict(csrf_token=csrf_token, credentials=params, client=client) sessid = sessions.create(request, session) return sessions.set_cookie( request, sessid, app_response(request, csrf_token=csrf_token, destination=destination))
def finish_login(request, destination, params): do_logout(request) server = request.app.settings.servers[int(params["server"])] if params["type"] == "cosignproxy": name = request.environ["COSIGN_SERVICE"] fladgejt_params = dict( type="cosignproxy", cosign_proxy=request.app.settings.cosign_proxy, cosign_service=(name, request.cookies[name]), ) else: fladgejt_params = params try: client = create_client(server, fladgejt_params) except Exception: return sessions.set_cookie( request, None, app_response( request, server=int(params["server"]), type=params["type"], error=traceback.format_exc(), destination=destination, ), ) csrf_token = sessions.generate_key() session = dict(csrf_token=csrf_token, credentials=params, client=client) sessid = sessions.create(request, session) return sessions.set_cookie(request, sessid, app_response(request, csrf_token=csrf_token, destination=destination))
def prihlas_sa(): username = os.environ['AIS_USERNAME'] password = os.environ['AIS_PASSWORD'] client = create_client( settings.servers[0], dict(type='cosignpassword', username=username, password=password)) if os.environ.get('AIS_VERBOSE'): client.context.print_logs = True return client
def finish_login(request, destination, params): do_logout(request) server = request.app.settings.servers[int(params['server'])] if params['type'] == 'cosignproxy': name = request.environ['COSIGN_SERVICE'] fladgejt_params = dict(type='cosignproxy', cosign_proxy=request.app.settings.cosign_proxy, cosign_service=(name, request.cookies[name])) else: fladgejt_params = params sessid = datetime.utcnow().strftime('%Y%m%d_') + generate_key() with sessions.lock(request.app, sessid), \ sessions.open_log_file(request, sessid) as log_file: logger = Logger() logger.log_file = log_file try: logger.log('login', 'Login started', [server.get('title'), params.get('type'), destination]) client = create_client(server, fladgejt_params, logger=logger) csrf_token = generate_key() session = dict(csrf_token=csrf_token, credentials=save_credentials(params), client=client) sessions.create(request, sessid, session) except Exception as e: error = traceback.format_exc() logger.log('login', 'Login failed with {}'.format(type(e).__name__), error) response = app_response(request, server=int(params['server']), type=params['type'], error=error, destination=destination) return sessions.set_session_cookie(request, response, None) logger.log('login', 'Login finished') response = app_response(request, csrf_token=csrf_token, destination=destination) return sessions.set_session_cookie(request, response, sessid)
def main(): from fladgejt.login import create_client json_input = json.load(sys.stdin) fakulta = json_input['fakulta'] semestre = json_input['semestre'] relevantne_roky = [ak_rok for ak_rok, sem in semestre] client = create_client(json_input['server'], json_input['params']) # full_name = client.get_full_name() # TODO is_student = False subjects = [] if client.get_som_student(): studia = client.get_studia() for studium in studia: if studium.sp_skratka == 'ZEkP' and not studium.organizacna_jednotka: studium = studium._replace(organizacna_jednotka='PriF') if fakulta and studium.organizacna_jednotka != fakulta: continue # TODO: pouzivat zapisny_list.organizacna_jednotka, ked bude v REST API for zapisny_list in client.get_zapisne_listy(studium.studium_key): if zapisny_list.akademicky_rok not in relevantne_roky: continue is_student = True for predmet in client.get_hodnotenia(zapisny_list.zapisny_list_key)[0]: if [zapisny_list.akademicky_rok, predmet.semester] not in semestre: continue subjects.append(dict( skratka=predmet.skratka, nazov=predmet.nazov, semester=predmet.semester, akRok=zapisny_list.akademicky_rok, rokStudia=zapisny_list.rocnik, studijnyProgram=dict(skratka=studium.sp_skratka, nazov=studium.sp_popis), )) client.logout() result = {} # result['full_name'] = full_name result['is_student'] = is_student result['subjects'] = subjects print(json.dumps(result))
def prihlas_sa(): username = os.environ['AIS_USERNAME'] password = os.environ['AIS_PASSWORD'] client = create_client(settings.servers[0], dict(type='cosignpassword', username=username, password=password)) if os.environ.get('AIS_VERBOSE'): client.context.print_logs = True return client
def main(): from fladgejt.login import create_client json_input = json.load(sys.stdin) fakulta = json_input['fakulta'] semestre = json_input['semestre'] relevantne_roky = [ak_rok for ak_rok, sem in semestre] client = create_client(json_input['server'], json_input['params']) # full_name = client.get_full_name() # TODO is_student = False subjects = [] ostatne_studia = [] if client.get_som_student(): studia = client.get_studia() for studium in studia: if studium.sp_skratka == 'ZEkP' and not studium.organizacna_jednotka: studium = studium._replace(organizacna_jednotka='PriF') if fakulta and studium.organizacna_jednotka != fakulta: for zapisny_list in client.get_zapisne_listy( studium.studium_key): # Ak je to pre nas relevantne studium, vratime ho # Dolezite pri zistovani chybajucej org. jednotky v AISe if zapisny_list.akademicky_rok in relevantne_roky: toto_studium = {} toto_studium[ 'skratka'] = studium.sp_skratka or "Neznamy program" toto_studium[ 'oj'] = studium.organizacna_jednotka or "bez fakulty" ostatne_studia.append(toto_studium) continue # TODO: pouzivat zapisny_list.organizacna_jednotka, ked bude v REST API for zapisny_list in client.get_zapisne_listy(studium.studium_key): if zapisny_list.akademicky_rok not in relevantne_roky: continue is_student = True for predmet in client.get_hodnotenia( zapisny_list.zapisny_list_key)[0]: if [zapisny_list.akademicky_rok, predmet.semester] not in semestre: continue if predmet.hodn_znamka == 'U': continue subjects.append( dict( skratka=predmet.skratka, nazov=predmet.nazov, semester=predmet.semester, akRok=zapisny_list.akademicky_rok, rokStudia=zapisny_list.rocnik, studijnyProgram=dict(skratka=studium.sp_skratka, nazov=studium.sp_popis), )) client.logout() result = {} # result['full_name'] = full_name result['is_student'] = is_student result['subjects'] = subjects result['ostatne_studia'] = ostatne_studia print(json.dumps(result))