public static ActivityDetails HandleResponse(AsymmetricCipherKeyPair keyPair, string responseContent) { if (string.IsNullOrEmpty(responseContent)) { throw new YotiProfileException(Properties.Resources.NullOrEmptyResponseContent); } ProfileDO parsedResponse = JsonConvert.DeserializeObject <ProfileDO>(responseContent); if (parsedResponse.Receipt == null) { throw new YotiProfileException(Properties.Resources.NullParsedResponse); } else if (parsedResponse.Receipt.SharingOutcome != "SUCCESS") { throw new YotiProfileException( $"The share was not successful, sharing_outcome: '{parsedResponse.Receipt.SharingOutcome}'"); } ReceiptDO receipt = parsedResponse.Receipt; var userProfile = new YotiProfile( ParseProfileContent(keyPair, receipt.WrappedReceiptKey, receipt.OtherPartyProfileContent)); SetAddressToBeFormattedAddressIfNull(userProfile); var applicationProfile = new ApplicationProfile( ParseProfileContent(keyPair, receipt.WrappedReceiptKey, receipt.ProfileContent)); ExtraData extraData = new ExtraData(); if (!string.IsNullOrEmpty(parsedResponse.Receipt.ExtraDataContent)) { extraData = CryptoEngine.DecryptExtraData( receipt.WrappedReceiptKey, parsedResponse.Receipt.ExtraDataContent, keyPair); } DateTime?timestamp = null; if (receipt.Timestamp != null && DateTime.TryParseExact( receipt.Timestamp, "yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out DateTime parsedDate)) { timestamp = parsedDate; } return(new ActivityDetails(parsedResponse.Receipt.RememberMeId, parsedResponse.Receipt.ParentRememberMeId, timestamp, userProfile, applicationProfile, parsedResponse.Receipt.ReceiptId, extraData)); }
public ActivityDetails HandleSuccessfulResponse(AsymmetricCipherKeyPair keyPair, Response response) { ProfileDO parsedResponse = JsonConvert.DeserializeObject <ProfileDO>(response.Content); if (parsedResponse.receipt == null) { return(new ActivityDetails { Outcome = ActivityOutcome.Failure }); } else if (parsedResponse.receipt.sharing_outcome != "SUCCESS") { return(new ActivityDetails { Outcome = ActivityOutcome.SharingFailure }); } else { ReceiptDO receipt = parsedResponse.receipt; AttrpubapiV1.AttributeList attributes = CryptoEngine.DecryptCurrentUserReceipt( parsedResponse.receipt.wrapped_receipt_key, parsedResponse.receipt.other_party_profile_content, keyPair); _yotiUserProfile.Id = parsedResponse.receipt.remember_me_id; _yotiProfile.Id = parsedResponse.receipt.remember_me_id; AddAttributesToProfile(attributes); return(new ActivityDetails { Outcome = ActivityOutcome.Success, UserProfile = _yotiUserProfile, Profile = _yotiProfile }); } }
public static void AddDefaultProfiles(IUnitOfWork uow) { //create 'Fr8 Admin' Profile var fr8AdminProfile = uow.ProfileRepository.GetQuery().FirstOrDefault(x => x.Name == DefaultProfiles.Fr8Administrator); if (fr8AdminProfile == null) { fr8AdminProfile = new ProfileDO { Id = Guid.NewGuid(), Name = DefaultProfiles.Fr8Administrator, Protected = true, PermissionSets = new List <PermissionSetDO>() }; uow.ProfileRepository.Add(fr8AdminProfile); } else { fr8AdminProfile.Protected = true; } //create 'System Administrator' Profile var profile = uow.ProfileRepository.GetQuery().FirstOrDefault(x => x.Name == DefaultProfiles.SystemAdministrator); if (profile == null) { profile = new ProfileDO { Id = Guid.NewGuid(), Name = DefaultProfiles.SystemAdministrator, Protected = true, PermissionSets = new List <PermissionSetDO>() }; uow.ProfileRepository.Add(profile); } else { profile.Protected = true; } //create 'Standard User' profile var standardProfile = uow.ProfileRepository.GetQuery().FirstOrDefault(x => x.Name == DefaultProfiles.StandardUser); if (standardProfile == null) { standardProfile = new ProfileDO() { Id = Guid.NewGuid(), Name = DefaultProfiles.StandardUser, Protected = true }; uow.ProfileRepository.Add(standardProfile); } else { standardProfile.Protected = true; } //presave needed here for permissionSetPermissions table inserts uow.SaveChanges(); fr8AdminProfile.PermissionSets.Clear(); //default permissions for Plans and PlanNodes fr8AdminProfile.PermissionSets.Add(AddPermissionSet(nameof(PlanNodeDO), true, false, false, fr8AdminProfile.Id, "Fr8 Administrator Permission Set", uow)); //default permissions for ContainerDO fr8AdminProfile.PermissionSets.Add(AddPermissionSet(nameof(ContainerDO), true, false, false, fr8AdminProfile.Id, "Fr8 Administrator Permission Set", uow)); //default permissions for Terminals fr8AdminProfile.PermissionSets.Add(AddPermissionSet(nameof(TerminalDO), true, false, false, fr8AdminProfile.Id, "Fr8 Administrator Permission Set", uow)); //default permissions for Users fr8AdminProfile.PermissionSets.Add(AddPermissionSet(nameof(Fr8AccountDO), true, false, true, fr8AdminProfile.Id, "Fr8 Administrator Permission Set", uow)); //default permissions for PageDefinitions fr8AdminProfile.PermissionSets.Add(AddPermissionSet(nameof(PageDefinitionDO), true, false, false, fr8AdminProfile.Id, "Fr8 Administrator Permission Set", uow)); profile.PermissionSets.Clear(); //default permissions for Plans and PlanNodes profile.PermissionSets.Add(AddPermissionSet(nameof(PlanNodeDO), false, false, false, profile.Id, "System Administrator Permission Set", uow)); //default permissions for ContainerDO profile.PermissionSets.Add(AddPermissionSet(nameof(ContainerDO), false, false, false, profile.Id, "System Administrator Permission Set", uow)); //default permissions for Terminals profile.PermissionSets.Add(AddPermissionSet(nameof(TerminalDO), false, false, false, profile.Id, "System Administrator Permission Set", uow)); //default permissions for Users profile.PermissionSets.Add(AddPermissionSet(nameof(Fr8AccountDO), false, true, false, profile.Id, "System Administrator Permission Set", uow)); //default permissions for PageDefinitions profile.PermissionSets.Add(AddPermissionSet(nameof(PageDefinitionDO), false, false, false, profile.Id, "System Administrator Permission Set", uow)); //add standard user to all users without profile var roles = uow.UserRepository.GetQuery().Where(x => x.ProfileId == null).ToList(); foreach (var item in roles) { item.ProfileId = profile.Id; } var adminRole = uow.AspNetRolesRepository.GetQuery().FirstOrDefault(x => x.Name == Roles.Admin); var userRoles = uow.AspNetUserRolesRepository.GetQuery().Where(x => x.RoleId == adminRole.Id).Select(l => l.UserId).ToList(); var fr8Admins = uow.UserRepository.GetQuery().Where(x => userRoles.Contains(x.Id)).ToList(); foreach (var user in fr8Admins) { user.ProfileId = fr8AdminProfile.Id; } standardProfile.PermissionSets.Clear(); //default permissions for Plans and PlanNodes standardProfile.PermissionSets.Add(AddPermissionSet(nameof(PlanNodeDO), false, false, false, standardProfile.Id, "Standard User Permission Set", uow)); //default permissions for ContainerDO standardProfile.PermissionSets.Add(AddPermissionSet(nameof(ContainerDO), false, false, false, standardProfile.Id, "Standard User Permission Set", uow)); //default permissions for Terminals standardProfile.PermissionSets.Add(AddPermissionSet(nameof(TerminalDO), false, false, false, standardProfile.Id, "Standard User Permission Set", uow)); //default permissions for Users standardProfile.PermissionSets.Add(AddPermissionSet(nameof(Fr8AccountDO), false, false, false, standardProfile.Id, "Standard User Permission Set", uow)); }