private void OnCreateContainer(object sender, ContainerEventArgs e) { foreach (var workSpaceType in e.Type.WorkSpaceTypeWithService(Name)) { var contextType = workSpaceType; var envName = e.Container.UniqueInstanceName(workSpaceType); var tracEnvironment = TracEnvironmentManager.Create(_envPath, envName); if (tracEnvironment == null) { Logger.Log(String.Format("Service {0} -> Create folder \"{1}\" fail", Name, envName)); continue; } if (!tracEnvironment.Initialize(workSpaceType.Services.Where(s => s.Name != Name).Select( s => new KeyValuePair<string, string>(s.Name, ServiceFactory.InstancePath(s.Name, e.Container, contextType)) ))) { Logger.Log(String.Format("Service {0} -> Initialize instance \"{1}\" fail", Name, envName)); continue; } var tracPermissions = new TracPermissionManager(tracEnvironment.EnvironmentPath); tracPermissions.RemoveAll(); foreach (var role in e.Type.Bindings.SelectMany(binding => binding.Roles)) { var groupName = e.Container.UniqueGroupName(role.RoleTypeName); foreach (var rule in role.Rules) { var permissions = rule.Permissions.Where(p => p.ServiceName == Name).Select(p => p.Name); foreach (var permission in permissions) tracPermissions.Add(groupName, permission); } } } }
private void OnEnrollUser(object sender, EnrollEventArgs e) { foreach (var workSpaceType in e.Container.Type.WorkSpaceTypeWithService(Name)) { var tracPermissions = new TracPermissionManager(TracEnvironmentManager.FormatEnvironmentPath(_envPath, e.Container. UniqueInstanceName( workSpaceType))); tracPermissions.AddGroupUser(e.Enroll.UserName, e.Container.UniqueGroupName(e.Enroll.RoleTypeName)); } }