/// <summary> /// Updates an application. /// </summary> /// <param name="applicationId">The id of the application to be updated.</param> /// <param name="applicationInfo">The application containing the updated information.</param> /// <returns>Returns the updated application.</returns> public SecurityApplicationInfo UpdateApplication(string applicationId, SecurityApplicationInfo applicationInfo) { var id = Guid.Empty; if (!Guid.TryParse(applicationId, out id)) { throw new ArgumentException($"{nameof(applicationId)} must be a valid GUID"); } if (id != applicationInfo.Id) { throw new ArgumentException($"Cannot update application using id: {id} and {applicationInfo.Id}"); } var securityRepository = ApplicationContext.Current.GetService <ISecurityRepositoryService>(); if (securityRepository == null) { throw new InvalidOperationException($"{nameof(ISecurityRepositoryService)} not found"); } applicationInfo.Application.Policies.AddRange(applicationInfo.Policies.Select(p => new SecurityPolicyInstance(p.Policy, p.Grant))); var updatedApplication = securityRepository.SaveApplication(applicationInfo.Application); return(new SecurityApplicationInfo(updatedApplication)); }
public override object Update(object data) { if (data is SecurityApplication) { data = new SecurityApplicationInfo(data as SecurityApplication); } return(base.Update(data)); }
/// <summary> /// Initializes a new instance of the <see cref="EditApplicationModel"/> class. /// </summary> /// <param name="securityApplicationInfo">The security application information.</param> public EditApplicationModel(SecurityApplicationInfo securityApplicationInfo) : this() { this.ApplicationName = securityApplicationInfo.Application.Name; this.ApplicationPolicies = securityApplicationInfo.Policies.Select(p => new PolicyViewModel(p)).OrderBy(p => p.Name).ToList(); this.CreationTime = securityApplicationInfo.Application.CreationTime.DateTime; this.HasPolicies = this.ApplicationPolicies.Any(); this.Id = securityApplicationInfo.Id.Value; this.Policies = this.ApplicationPolicies.Select(p => p.Id.ToString()).ToList(); this.IsObsolete = securityApplicationInfo.Application.ObsoletionTime != null; }
/// <summary> /// Creates a security application. /// </summary> /// <param name="applicationInfo">The security application to be created.</param> /// <returns>Returns the created security application.</returns> public SecurityApplicationInfo CreateApplication(SecurityApplicationInfo applicationInfo) { var securityRepositoryService = ApplicationContext.Current.GetService <ISecurityRepositoryService>(); if (securityRepositoryService == null) { throw new InvalidOperationException($"{nameof(ISecurityRepositoryService)} not found"); } applicationInfo.Application?.Policies.AddRange(applicationInfo.Policies.Select(p => new SecurityPolicyInstance(p.Policy, p.Grant))); var createdApplication = securityRepositoryService.CreateApplication(applicationInfo.Application); return(new SecurityApplicationInfo(createdApplication)); }
// [PolicyPermission(System.Security.Permissions.SecurityAction.Demand, PolicyId = PermissionPolicyIdentifiers.UnrestrictedMetadata)] public static void AddAssigningAuthority(AddAssigningAuthorityParams parms) { // First, resolve the assigner SecurityApplicationInfo assigner = null; if (!String.IsNullOrEmpty(parms.Assigner)) { assigner = m_amiClient.GetApplications(o => o.Name == parms.Assigner).CollectionItem.FirstOrDefault() as SecurityApplicationInfo; if (assigner == null) { throw new KeyNotFoundException("Assigner unknown"); } } // Scope List <Concept> scope = new List <Concept>(); if (parms.Scope?.Count > 0) { foreach (var s in parms.Scope) { var scp = m_hdsiClient.Query <Concept>(o => o.Mnemonic == s, 0, 1, false).Item.OfType <Concept>().FirstOrDefault(); if (scp == null) { throw new KeyNotFoundException($"Scope {s} unknown"); } scope.Add(scp); } } // Construct AA foreach (var domainName in parms.Authority) { var aa = new AssigningAuthority(domainName, parms.Name, parms.Oid) { Url = parms.Url, AuthorityScope = scope, AssigningApplication = assigner?.Entity, IsUnique = parms.Unique }; aa = m_amiClient.CreateAssigningAuthority(aa); Console.WriteLine("CREATE AUTHORITY {0} = {1}", aa.DomainName, aa.Key); } }
public override object Create(object data, bool updateIfExists) { if (data is SecurityApplication) { data = new SecurityApplicationInfo(data as SecurityApplication); } var sde = data as SecurityApplicationInfo; // If no policies then assign the ones from SYNCHRONIZERS if (sde.Policies == null || sde.Policies.Count == 0 && sde.Entity?.Policies == null || sde.Entity.Policies.Count == 0) { var role = ApplicationServiceContext.Current.GetService <ISecurityRepositoryService>()?.GetRole("SYNCHRONIZERS"); var policies = ApplicationServiceContext.Current.GetService <IPolicyInformationService>()?.GetPolicies(role); if (policies != null) { sde.Policies = policies.Select(o => new SecurityPolicyInfo(o)).ToList(); } } return(base.Create(data, updateIfExists)); }
/// <summary> /// Converts a <see cref="EditApplicationModel"/> to a <see cref="SecurityApplicationInfo"/> /// </summary> /// <param name="model">The edit device model to convert.</param> /// <param name="appInfo">The security application info for which to apply the changes against.</param> /// <returns>Returns a security device info object.</returns> protected SecurityApplicationInfo ToSecurityApplicationInfo(EditApplicationModel model, SecurityApplicationInfo appInfo) { appInfo.Application.Key = model.Id; appInfo.Id = model.Id; appInfo.Application.Name = model.ApplicationName; appInfo.Name = model.ApplicationName; var policyList = this.GetNewPolicies(model.Policies.Select(Guid.Parse)); appInfo.Policies.Clear(); appInfo.Policies.AddRange(policyList.Select(p => new SecurityPolicyInfo(p) { Grant = PolicyGrantType.Grant })); return(appInfo); }
/// <summary> /// Initializes a new instance of the <see cref="ApplicationViewModel"/> class /// with a specific <see cref="SecurityApplicationInfo"/> instance. /// </summary> /// <param name="securityApplicationInfo">The <see cref="SecurityApplicationInfo"/> instance.</param> public ApplicationViewModel(SecurityApplicationInfo securityApplicationInfo) : base(securityApplicationInfo) { this.ApplicationName = securityApplicationInfo.Name; }
/// <summary> /// Updates an application. /// </summary> /// <param name="applicationId">The id of the application to be updated.</param> /// <param name="applicationInfo">The application containing the updated information.</param> /// <returns>Returns the updated application.</returns> public SecurityApplicationInfo UpdateApplication(Guid applicationId, SecurityApplicationInfo applicationInfo) { return(this.Client.Put <SecurityApplicationInfo, SecurityApplicationInfo>($"SecurityApplication/{applicationId}", applicationInfo)); }
/// <summary> /// Creates a security application. /// </summary> /// <param name="applicationInfo">The security application to be created.</param> /// <returns>Returns the created security application.</returns> public SecurityApplicationInfo CreateApplication(SecurityApplicationInfo applicationInfo) { return(this.Client.Post <SecurityApplicationInfo, SecurityApplicationInfo>("SecurityApplication", applicationInfo)); }
/// <summary> /// Updates an application. /// </summary> /// <param name="applicationId">The id of the application to be updated.</param> /// <param name="applicationInfo">The application containing the updated information.</param> /// <returns>Returns the updated application.</returns> public SecurityApplicationInfo UpdateApplication(string applicationId, SecurityApplicationInfo applicationInfo) { return(this.Client.Put <SecurityApplicationInfo, SecurityApplicationInfo>($"application/{applicationId}", this.Client.Accept, applicationInfo)); }
/// <summary> /// Initializes a new instance of the <see cref="SecurityViewModel"/> class /// with a specific <see cref="SecurityApplicationInfo"/> instance. /// </summary> /// <param name="securityApplicationInfo">The <see cref="SecurityApplicationInfo"/> instance.</param> protected SecurityViewModel(SecurityApplicationInfo securityApplicationInfo) : this(securityApplicationInfo.Application, securityApplicationInfo.Policies) { }