Gestión de Permisos en .NET

cancel
Showing results for 
Search instead for 
Did you mean: 
luisa_
Member II

Gestión de Permisos en .NET

Lastimosamente no hay documentación de referencia suficiente para el uso del API de Alfresco para .NET, por lo cual espero vuestra ayuda con algunos temas… en esta caso la gestión permisos, necesito crear y asignar permisos de CONSUMER a un usuario específico a su homeFolder.
La creación la he logrado con la ayuda de este foro:
http://forums.alfresco.com/es/viewtopic.php?f=11&t=13
La parte pendiente es la asignación de permisos, alguien podría aportar con alguna sugerencia por favor! cualquier ayuda es bienvenida, gracias.
1 Reply
luisa_
Member II

Re: Gestión de Permisos en .NET

Pues bueno… para programadores .NET espero que podamos lograr una comunidad interesante :wink:
A continuación comparto versión inicial del código que me ayudó a resolver el problema! esto gracias a la ayuda de Javier Martí­nez!

       public string createUser(string UserName, string HomeFolder, string ticket)
        {
            try
            {
                //Para crearusuarios debes estar logueado como administrador
Login login = new Login();
                Alfresco.AuthenticationUtils.setTicket(login.Conectar(ConfigurationManager.AppSettings["AdminUser"].ToString(), ConfigurationManager.AppSettings["AdminPass"].ToString()));

                NewUserDetails[] users = new NewUserDetails[1];
                users[0] = new NewUserDetails();
                Random rnd = new Random();
                users[0].password = rnd.Next(10000, 99999).ToString();
                users[0].userName = UserName;          

                Alfresco.AdministrationWebService.NamedValue[] properties = new Alfresco.AdministrationWebService.NamedValue[5];

                Alfresco.AdministrationWebService.NamedValue nameProperty = new Alfresco.AdministrationWebService.NamedValue();

                nameProperty.name = Constants.PROP_USER_FIRSTNAME;
                nameProperty.value = UserName;
                nameProperty.isMultiValue = false;
                properties[0] = nameProperty;

                // Create the properties list
                nameProperty = new Alfresco.AdministrationWebService.NamedValue();
                nameProperty.name = Constants.PROP_USER_LASTNAME;
                nameProperty.value = "User";
                nameProperty.isMultiValue = false;
                properties[1] = nameProperty;
               
                // User email
                nameProperty = new Alfresco.AdministrationWebService.NamedValue();
                nameProperty.name = Constants.PROP_USER_EMAIL;
                nameProperty.value = UserName;
                nameProperty.isMultiValue = false;
                properties[2] = nameProperty;

                // Home folder
                nameProperty = new Alfresco.AdministrationWebService.NamedValue();
                nameProperty.name = Constants.PROP_USER_HOMEFOLDER;
                nameProperty.value = HomeFolder;
                nameProperty.isMultiValue = false;
                properties[3] = nameProperty;

                // Organization ID
                nameProperty = new Alfresco.AdministrationWebService.NamedValue();
                nameProperty.name = Constants.PROP_USER_ORGID;
                nameProperty.value = "";
                nameProperty.isMultiValue = false;
                properties[4] = nameProperty;

                users[0].properties = properties;

                WebServiceFactory.getAdministrationService().createUsers(users);
                asignarPermisos(HomeFolder, users[0]);
                //createPersonProperties
                Alfresco.AuthenticationUtils.setTicket(ticket);

                return users[0].password;

            }
            catch (Exception ex)
            {
                return ex.Message.ToString();
            }

el homeFolder lo obtengo así:
       public string getHomeFolder(string usuario)
        {
            Alfresco.AdministrationWebService.AdministrationService administrationService = new Alfresco.AdministrationWebService.AdministrationService();
            administrationService = WebServiceFactory.getAdministrationService();
            Alfresco.AdministrationWebService.UserDetails detallesUser = new Alfresco.AdministrationWebService.UserDetails();
            detallesUser = administrationService.getUser(usuario);
            string homeFolder = string.Empty;
            for (int i = 0; i < detallesUser.properties.Length; i++)
            {
                if (detallesUser.properties[i].name.ToString() == "{http://www.alfresco.org/model/content/1.0}homeFolder")
                {
                    homeFolder = detallesUser.properties[i].value.ToString();
                    i = detallesUser.properties.Length;
                }
            }
            return homeFolder;
        }

Para la asignación de permisos de Usuario primero elimino todos los permisos y luego asigno Rol "Consumer" y listo!

public void asignarPermisos(string espacioID, NewUserDetails user)

        {
            Alfresco.AccessControlWebService.Reference Ref = new Alfresco.AccessControlWebService.Reference();
            Alfresco.AccessControlWebService.Store spacesS = new Alfresco.AccessControlWebService.Store();

            spacesS.scheme = Alfresco.AccessControlWebService.StoreEnum.workspace;
            spacesS.address = "SpacesStore";
            Ref.store = spacesS;
            Ref.uuid = espacioID;
            Ref.path = null;

            Alfresco.AccessControlWebService.Predicate pred = new Alfresco.AccessControlWebService.Predicate();
            pred.Items = new Object[] { Ref, spacesS, null };

            Alfresco.AccessControlWebService.ACE[] aceRemove = new Alfresco.AccessControlWebService.ACE[1];
            aceRemove[0] = new Alfresco.AccessControlWebService.ACE();
            aceRemove[0].authority = user.userName;
            aceRemove[0].permission = Constants.ALL_PERMISSIONS;//Constants.COORDINATOR;
            aceRemove[0].accessStatus = Alfresco.AccessControlWebService.AccessStatus.declined;

            WebServiceFactory.getAccessControlService().removeACEs(pred, aceRemove);

            Alfresco.AccessControlWebService.ACE[] aceWrite = new Alfresco.AccessControlWebService.ACE[1];
            aceWrite[0] = new Alfresco.AccessControlWebService.ACE();
            aceWrite[0].authority = user.userName;
            aceWrite[0].permission = "Consumer";//Consumer Permissions
            aceWrite[0].accessStatus = Alfresco.AccessControlWebService.AccessStatus.acepted;

            WebServiceFactory.getAccessControlService().addACEs(pred, aceWrite);
        }

Cualquier inquietud estamos en contacto!