public void Add(IDictionary <string, IList <ApiPermissionsBySchemeType> > permissionsByScheme) { Console.WriteLine("[ ApiPermissionsByScheme ] starting ..."); if (permissionsByScheme == null || !permissionsByScheme.Any()) { return; } if (this.model.EntityContainer == null) { Console.WriteLine("The EntityContainer is null at current model, cannot apply the permissions by scheme"); return; } string entitySetFullName = this.model.EntityContainer.FullName(); // <Annotations Target="..."> writer.WriteStartElement("Annotations"); writer.WriteAttributeString("Target", entitySetFullName); // <Annotation Term="Org.OData.Authorization.V1.Authorizationss"> writer.WriteStartElement("Annotation"); writer.WriteAttributeString("Term", "Org.OData.Authorization.V1.Authorizations"); writer.WriteStartElement("Collection"); foreach (var perm in permissionsByScheme) { Console.WriteLine("==>" + perm.Key); IRecord record; try { record = ApiPermissionHelper.ConvertToRecord(perm); writer.WriteRecord(record, "Org.OData.Authorization.V1.OAuth2Implicit"); } catch (Exception ex) { var color = Console.BackgroundColor; Console.BackgroundColor = ConsoleColor.Red; Console.WriteLine(" [PermssionError]: " + ex.Message); Console.BackgroundColor = color; } } // </Collection> writer.WriteEndElement(); // </Annotation> writer.WriteEndElement(); // </Annotations> writer.WriteEndElement(); Console.WriteLine("[ ApiPermissionsByScheme ] Done!"); }
public void Add(IDictionary <UriPath, IList <ApiPermissionType> > permissions) { IDictionary <string, IList <IRecord> > targetStringMerged = new Dictionary <string, IList <IRecord> >(); foreach (var permission in permissions) { UriPath path = permission.Key; PathKind kind = path.Kind; string target = path.GetTargetString(); IList <IRecord> records; if (!targetStringMerged.TryGetValue(target, out records)) { records = new List <IRecord>(); targetStringMerged[target] = records; } foreach (var perm in permission.Value) { PermissionsRecord permissionRecord; try { permissionRecord = ApiPermissionHelper.ConvertToRecord(kind, perm); ReadRestrictionsType readRest = permissionRecord as ReadRestrictionsType; if (readRest != null) { var existingReadRest = records.FirstOrDefault(r => r is ReadRestrictionsType); if (existingReadRest != null) { MergeReadRest(existingReadRest as ReadRestrictionsType, readRest, target); continue; } } // TODO: verify only one Restriction existing for one target? records.Add(permissionRecord as IRecord); } catch (Exception ex) { //var color = Console.BackgroundColor; //Console.BackgroundColor = ConsoleColor.Red; Console.WriteLine(" [PermssionError]: " + ex.Message); //Console.BackgroundColor = color; PermissionsError[target] = ex; } } } foreach (var item in targetStringMerged) { Write(item.Key, item.Value); } }