def user_info(request): auth_header = request.META.get("HTTP_AUTHORIZATION") if not auth_header: log.info("403: Missing auth header") return HttpResponseForbidden() pattern = re.compile(r"^Bearer\s([A-Z-a-z-0-9-_/-]+)$") if not pattern.match(auth_header): log.info("Auth header has wrong format") return HttpResponseForbidden() auth_token = auth_header[7:] auth_token_hash = make_password(auth_token, settings.FC_AS_FI_HASH_SALT) try: connection = Connection.objects.get(access_token=auth_token_hash) if connection.is_expired: log.info("connection has expired at user_info") return render(request, "408.html", status=408) except ObjectDoesNotExist: log.info( "403: /user_info No connection corresponds to the access_token") log.info(auth_token) return HttpResponseForbidden() usager = model_to_dict( connection.usager, fields=[ "birthcountry", "birthdate", "birthplace", "creation_date", "email", "family_name", "gender", "given_name", "preferred_username", "sub", ], ) birthdate = usager["birthdate"] birthplace = usager["birthplace"] birthcountry = usager["birthcountry"] usager["birthplace"] = str(birthplace) usager["birthcountry"] = str(birthcountry) usager["birthdate"] = str(birthdate) Journal.log_autorisation_use( aidant=connection.aidant, usager=connection.usager, demarche=connection.demarche, access_token=connection.access_token, autorisation=connection.autorisation, ) return JsonResponse(usager, safe=False)
def test_log_autorisation_use_complete(self): entry = Journal.log_autorisation_use( aidant=self.aidant_thierry, usager=self.usager_ned, demarche="transports", access_token="fjfgjfdkldlzlsmqqxxcn", autorisation=self.first_autorisation, ) self.assertEqual(len(Journal.objects.all()), 3) self.assertEqual(entry.action, "use_autorisation") self.assertEqual(entry.demarche, "transports")
def test_it_is_impossible_to_delete_an_existing_entry(self): entry = Journal.log_autorisation_use( aidant=self.aidant_thierry, usager=self.usager_ned, demarche="transports", access_token="fjfgjfdkldlzlsmqqxxcn", autorisation=self.first_autorisation, ) self.assertRaises(NotImplementedError, entry.delete) self.assertEqual( Journal.objects.get(id=entry.id).demarche, "transports")