def _get_role_area_ids(parentAreaIds, areaType, voteTypes=[]): from orm.entities import Area, Election _role_area_ids = [] parentAreas = [] if parentAreaIds is not None and len(parentAreaIds) > 0: parentAreas = db.session.query(Area.Model).filter( Area.Model.areaId.in_(parentAreaIds)).all() if len(parentAreas) > 0: associated_areas_subquery = Area.get_associated_areas_query( areas=parentAreas, areaType=areaType).subquery() query = db.session.query(associated_areas_subquery.c.areaId) if len(voteTypes) > 0: query = query.filter( Election.Model.electionId == associated_areas_subquery.c.electionId, Election.Model.voteType.in_(voteTypes)) _role_area_ids = query.group_by( associated_areas_subquery.c.areaId).all() return _role_area_ids
def get_root_token(election): electionId = election.electionId electoral_districts = Area.get_associated_areas_query( areas=[], areaType=AreaTypeEnum.ElectoralDistrict, electionId=electionId).all() countries = Area.get_associated_areas_query(areas=[], areaType=AreaTypeEnum.Country, electionId=electionId).all() jwt_payload = { ROLE_CLAIM: [ ROLE_PREFIX + ADMIN_ROLE, ROLE_PREFIX + DATA_EDITOR_ROLE, ROLE_PREFIX + POLLING_DIVISION_REPORT_VIEWER_ROLE, ROLE_PREFIX + POLLING_DIVISION_REPORT_VERIFIER_ROLE, ROLE_PREFIX + ELECTORAL_DISTRICT_REPORT_VIEWER_ROLE, ROLE_PREFIX + ELECTORAL_DISTRICT_REPORT_VERIFIER_ROLE, ROLE_PREFIX + NATIONAL_REPORT_VIEWER_ROLE, ROLE_PREFIX + NATIONAL_REPORT_VERIFIER_ROLE, ROLE_PREFIX + EC_LEADERSHIP_ROLE ], SUB: "*****@*****.**", AREA_CLAIM_PREFIX + ADMIN_ROLE: str([]), AREA_CLAIM_PREFIX + DATA_EDITOR_ROLE: str([{ "areaId": electoral_district.areaId, "areaName": electoral_district.areaName } for electoral_district in electoral_districts]), AREA_CLAIM_PREFIX + POLLING_DIVISION_REPORT_VIEWER_ROLE: str([{ "areaId": electoral_district.areaId, "areaName": electoral_district.areaName } for electoral_district in electoral_districts]), AREA_CLAIM_PREFIX + POLLING_DIVISION_REPORT_VERIFIER_ROLE: str([{ "areaId": electoral_district.areaId, "areaName": electoral_district.areaName } for electoral_district in electoral_districts]), AREA_CLAIM_PREFIX + ELECTORAL_DISTRICT_REPORT_VIEWER_ROLE: str([{ "areaId": electoral_district.areaId, "areaName": electoral_district.areaName } for electoral_district in electoral_districts]), AREA_CLAIM_PREFIX + ELECTORAL_DISTRICT_REPORT_VERIFIER_ROLE: str([{ "areaId": electoral_district.areaId, "areaName": electoral_district.areaName } for electoral_district in electoral_districts]), AREA_CLAIM_PREFIX + NATIONAL_REPORT_VIEWER_ROLE: str([{ "areaId": country.areaId, "areaName": country.areaName } for country in countries]), AREA_CLAIM_PREFIX + NATIONAL_REPORT_VERIFIER_ROLE: str([{ "areaId": country.areaId, "areaName": country.areaName } for country in countries]), AREA_CLAIM_PREFIX + EC_LEADERSHIP_ROLE: str([{ "areaId": country.areaId, "areaName": country.areaName } for country in countries]) } # Generate a token with claims for everything. key = "jwt_secret" encoded_jwt_token = jwt.encode(jwt_payload, key) return encoded_jwt_token
def get_root_token(election): from orm.entities import Area from orm.enums import AreaTypeEnum provinces = Area.get_associated_areas_query( areas=[], areaType=AreaTypeEnum.Province, electionId=election.election.electionId).all() administrative_districts = Area.get_associated_areas_query( areas=[], areaType=AreaTypeEnum.AdministrativeDistrict, electionId=election.election.electionId).all() countries = Area.get_associated_areas_query( areas=[], areaType=AreaTypeEnum.Country, electionId=election.election.electionId).all() jwt_payload = { ROLE_CLAIM: [ ROLE_PREFIX + ADMIN_ROLE, ROLE_PREFIX + DATA_EDITOR_ROLE, ROLE_PREFIX + POLLING_DIVISION_REPORT_VIEWER_ROLE, ROLE_PREFIX + POLLING_DIVISION_REPORT_VERIFIER_ROLE, ROLE_PREFIX + ADMINISTRATIVE_DISTRICT_REPORT_VIEWER_ROLE, ROLE_PREFIX + ADMINISTRATIVE_DISTRICT_REPORT_VERIFIER_ROLE, ROLE_PREFIX + PROVINCIAL_REPORT_VIEWER_ROLE, ROLE_PREFIX + PROVINCIAL_REPORT_VERIFIER_ROLE, ROLE_PREFIX + NATIONAL_REPORT_VIEWER_ROLE, ROLE_PREFIX + NATIONAL_REPORT_VERIFIER_ROLE, ROLE_PREFIX + EC_LEADERSHIP_ROLE ], SUB: "*****@*****.**", AREA_CLAIM_PREFIX + ADMIN_ROLE: str([]), AREA_CLAIM_PREFIX + DATA_EDITOR_ROLE: str([{ "areaId": administrative_district.areaId, "areaName": administrative_district.areaName } for administrative_district in administrative_districts]), AREA_CLAIM_PREFIX + POLLING_DIVISION_REPORT_VIEWER_ROLE: str([{ "areaId": administrative_district.areaId, "areaName": administrative_district.areaName } for administrative_district in administrative_districts]), AREA_CLAIM_PREFIX + POLLING_DIVISION_REPORT_VERIFIER_ROLE: str([{ "areaId": administrative_district.areaId, "areaName": administrative_district.areaName } for administrative_district in administrative_districts]), AREA_CLAIM_PREFIX + ADMINISTRATIVE_DISTRICT_REPORT_VIEWER_ROLE: str([{ "areaId": administrative_district.areaId, "areaName": administrative_district.areaName } for administrative_district in administrative_districts]), AREA_CLAIM_PREFIX + ADMINISTRATIVE_DISTRICT_REPORT_VERIFIER_ROLE: str([{ "areaId": administrative_district.areaId, "areaName": administrative_district.areaName } for administrative_district in administrative_districts]), AREA_CLAIM_PREFIX + PROVINCIAL_REPORT_VIEWER_ROLE: str([{ "areaId": province.areaId, "areaName": province.areaName } for province in provinces]), AREA_CLAIM_PREFIX + PROVINCIAL_REPORT_VERIFIER_ROLE: str([{ "areaId": province.areaId, "areaName": province.areaName } for province in provinces]), AREA_CLAIM_PREFIX + NATIONAL_REPORT_VIEWER_ROLE: str([{ "areaId": country.areaId, "areaName": country.areaName } for country in countries]), AREA_CLAIM_PREFIX + NATIONAL_REPORT_VERIFIER_ROLE: str([{ "areaId": country.areaId, "areaName": country.areaName } for country in countries]), AREA_CLAIM_PREFIX + EC_LEADERSHIP_ROLE: str([{ "areaId": country.areaId, "areaName": country.areaName } for country in countries]) } # Generate a token with claims for everything. key = "jwt_secret" encoded_jwt_token = jwt.encode(jwt_payload, key) return encoded_jwt_token