Ejemplo n.º 1
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 2
0
 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));
     }
 }