{"id":1345,"date":"2014-09-02T11:00:55","date_gmt":"2014-09-02T10:00:55","guid":{"rendered":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?p=1345"},"modified":"2014-09-02T09:20:25","modified_gmt":"2014-09-02T08:20:25","slug":"asignar-permisos-mediante-programacion","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/asignar-permisos-mediante-programacion\/","title":{"rendered":"Asignar permisos mediante programaci\u00f3n en sitios multiidioma"},"content":{"rendered":"<p>Cuando vamos a abordar\u00a0un proyecto que es multiidioma debemos de tener en cuenta diversas particularidades a la hora de implementar nuestros desarrollos. M\u00e1s o menos todos tenemos\u00a0en cuenta los ficheros de recursos para hacer que la interfaz (que va a visualizar el usuario) se adapte a su idioma, sin embargo solemos olvidarnos\u00a0de otros aspectos igual\u00a0de importantes como, por ejemplo, asignar los permisos y que estos no dependan del idioma en el que este nuestro site.<br \/>\nEstos fallos no s\u00f3lo son comunes en nuestros desarrollos, sino que en productos desarrollados por grandes empresas tambi\u00e9n tienen estos inconvenientes. \u00bfQui\u00e9n no ha estado realizando un desarrollo pensando que el cliente tiene la granja de SharePoint instalada en espa\u00f1ol y resulta que\u00a0al final el\u00a0desarrollo se ejecuta en un entorno en ingl\u00e9s con un Service pack en catal\u00e1n? Lo cierto, es que Sharepoint se comporta de una forma un tanto peculiar, tal y como vamos a observar a lo largo de este post.<!--more--><\/p>\n<p><strong>Caso de estudio:<\/strong><br \/>\nTenemos un sitio de colaboraci\u00f3n MUI (Multilingual User Interface), el idioma por defecto es el ingl\u00e9s, pero la interfaz puede estar tanto en ingl\u00e9s, en catal\u00e1n o en castellano. Por este motivo, le instalaremos los Service Pack de espa\u00f1ol y de catal\u00e1n. Esta\u00a0es una de las caracter\u00edsticas que trae Office365 para estos sitios.<br \/>\nUna vez instalado el\u00a0language pack en nuestro sitio, tenemos que activar los lenguajes que va a soportar nuestra aplicaci\u00f3n. Para ello, debemos ir a Site Settings&#8211;&gt;Site Administration&#8211;&gt;Language Settings y activar los idiomas que consideremos oportunos.<br \/>\n<a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/08\/SiteSettings.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1346\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/08\/SiteSettings-300x183.png\" alt=\"Site Settings Language Settings\" width=\"300\" height=\"183\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/08\/SiteSettings-300x183.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/08\/SiteSettings.png 741w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>En el momento que activamos los idiomas, podremos observar la interfaz en un idioma u otro (dependiendo del idioma que este definido en nuestro navegador).<br \/>\n<strong>Problema<\/strong><br \/>\nEsta caracter\u00edstica est\u00e1 muy bien y da muchas facilidades a la hora de establecer sitios multiidioma en SharePoint. Sin embargo, el problema surge cuando queremos\u00a0realizar diversas acciones en las que existe una dependencia del idioma. El caso de los permisos es un aspecto que tenemos que tener en cuenta, tal y como vamos a ver a continuaci\u00f3n.<br \/>\nDependiendo del idioma en el que nos encontremos, los roles de permisos tienen un nombre u otro. Basta con irnos a la interfaz gr\u00e1fica y podemos ver que los permisos que podemos asignar correctamente\u00a0son <em>Read, Leer o Llegir<\/em> (dependiendo del idioma en el que nos encontremos). Tambi\u00e9n podemos realizarlo mediante el siguiente c\u00f3digo:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\nprivate string ObtenerGruposdePermisos()\r\n        {\r\n            StringBuilder result= new StringBuilder();\r\n            var roleDefinition = SPContext.Current.Web.RoleDefinitions;\r\n            foreach (SPRoleDefinition spRoleDefinition in roleDefinition)\r\n            {\r\n                result.AppendLine(spRoleDefinition.Name);\r\n            }\r\n\r\n            return result.ToString();\r\n        }\r\n<\/pre>\n<p>Si este c\u00f3digo lo a\u00f1adimos en un WebPart (dependiendo del idioma en el que nos encontremos) se visualizar\u00e1 la siguiente informaci\u00f3n:<br \/>\n<a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/08\/RolesIngles.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1347\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/08\/RolesIngles-300x81.png\" alt=\"RolesIngles\" width=\"300\" height=\"81\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/08\/RolesIngles-300x81.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/08\/RolesIngles.png 686w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\n<a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/08\/RolesCatalan.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1348\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/08\/RolesCatalan-300x66.png\" alt=\"RolesCatalan\" width=\"300\" height=\"66\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/08\/RolesCatalan-300x66.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/08\/RolesCatalan.png 733w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Una vez establecido cu\u00e1l es el entorno en el que nos encontramos y sobre el que vamos a realizar nuestro desarrollo, tenemos el siguiente problema: dependiendo del estado en el que se encuentre un documento, tenemos que cambiar los roles a determinados grupos de seguridad. Para realizar este cambio de seguridad, lo implementaremos dependiendo de un EventReceiver. Para ello, implementamos la siguiente funci\u00f3n:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\nusing (SPSite site = new SPSite(&quot;http:\/\/sf2&quot;))\r\n            {\r\n                using (SPWeb web = site.OpenWeb())\r\n                {\r\n                    web.AllowUnsafeUpdates = true;\r\n                    var listAdd = web.Lists.TryGetList(&quot;Usuarios&quot;);\r\n                    var oGroup = web.Site.RootWeb.Groups.GetByName(&quot;Demo&quot;);\r\n                    var roleAssignment = new SPRoleAssignment(oGroup);\r\n                    var roleDefinition = web.RoleDefinitions&#x5B;&quot;Read&quot;];\r\n                    roleAssignment.RoleDefinitionBindings.Add(roleDefinition);\r\n                    if (!listAdd.HasUniqueRoleAssignments)\r\n                    {\r\n                        listAdd.BreakRoleInheritance(false);\r\n                    }\r\n                    listAdd.RoleAssignments.Add(roleAssignment);\r\n                    listAdd.Update(true);\r\n                    web.AllowUnsafeUpdates = false;\r\n                }\r\n            }\r\n<\/pre>\n<p>El c\u00f3digo, en la lista que indicamos, asigna al grupo \u00abDemo\u00bb permisos de lectura. En caso de que \u00e9sta lista herede permisos del sitio, debemos romper esta herencia mediante la funci\u00f3n BreakRoleInheritance con el par\u00e1metro a true.<\/p>\n<p>Ahora bien, \u00bfpens\u00e1is que este c\u00f3digo funcionar\u00e1 en todos los supuestos?<\/p>\n<p>La respuesta es clara: <strong>NO<\/strong>. Ese c\u00f3digo lo hemos a\u00f1adido en un EventRecevier cada vez que se modifica un elemento de una lista. Si modificamos el elemento en una interfaz en ingl\u00e9s, los permisos se modifican sin ning\u00fan problema. Sin embargo,\u00a0si los modificamos en un entorno castellano o catal\u00e1n, nos encontramos con que los permisos no se han asignado. Consultamos el log y encontramos un error indicando que el Grupo \u00abRead\u00bb no lo encuentra. En teor\u00eda, el EventReceiver no deber\u00eda tener dependencia de la interfaz, ya que un receptor se deber\u00eda ejecutar en el idioma en el que esta instalado SharePoint.<\/p>\n<p><strong>Soluci\u00f3n<\/strong><br \/>\nPara no tener esa dependencia del idioma, se pueden consultar los Roles en base a un enumerado <a href=\"http:\/\/msdn.microsoft.com\/es-es\/library\/microsoft.sharepoint.sproletype.aspx\" target=\"_blank\">SPRoleType<\/a>. Para ello, modificamos la forma en la que se obtiene el rol de la siguiente forma:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\n    var roleDefinition = web.RoleDefinitions.GetByType(SPRoleType.Reader);\r\n<\/pre>\n<p>En caso de que con los Roles por defecto que trae SharePoint no tengamos suficiente, tenemos dos opciones: seguir accediendo por nombre (siempre que pongamos un nombre com\u00fan para los tres idiomas) o extender el SPRoleType con los roles que hemos a\u00f1adido.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>Muchas veces, cuando hacemos nuestros desarrollos, no nos paramos a pensar las consecuencias que tiene asignar constantes del sistema y las consecuencias que puede ocasionar a nuestro desarrollo. En este caso, asignar permisos (en base al idioma en el que suponemos que se va ejecutar) es un lastre que no podemos ni debemos cometer.<\/p>\n<p><strong>Referencias<\/strong><br \/>\n<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ff800886.aspx\" target=\"_blank\">http:\/\/msdn.microsoft.com\/en-us\/library\/ff800886.aspx<\/a><br \/>\n<a href=\"http:\/\/blogs.msdn.com\/b\/varun_malhotra\/archive\/2008\/08\/20\/how-to-use-role-definitions-across-multiple-language-moss-versions-clean-approach.aspx\" target=\"_blank\">http:\/\/blogs.msdn.com\/b\/varun_malhotra\/archive\/2008\/08\/20\/how-to-use-role-definitions-across-multiple-language-moss-versions-clean-approach.aspx<\/a><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content --><span class=\"et_bloom_bottom_trigger\"><\/span>","protected":false},"excerpt":{"rendered":"<p>Cuando vamos a abordar\u00a0un proyecto que es multiidioma debemos de tener en cuenta diversas particularidades a la hora de implementar nuestros desarrollos. M\u00e1s o menos todos tenemos\u00a0en cuenta los ficheros de recursos para hacer que la interfaz (que va a &hellip; <a href=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/asignar-permisos-mediante-programacion\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[146,118],"class_list":["post-1345","post","type-post","status-publish","format-standard","hentry","category-buenas-practicas","tag-buenas-practicas","tag-permisos"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.2.1 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Asignar permisos mediante programaci\u00f3n en sitios multiidioma - Desarrollando sobre SharePoint<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/asignar-permisos-mediante-programacion\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Asignar permisos mediante programaci\u00f3n en sitios multiidioma - Desarrollando sobre SharePoint\" \/>\n<meta name=\"twitter:description\" content=\"Cuando vamos a abordar\u00a0un proyecto que es multiidioma debemos de tener en cuenta diversas particularidades a la hora de implementar nuestros desarrollos. M\u00e1s o menos todos tenemos\u00a0en cuenta los ficheros de recursos para hacer que la interfaz (que va a &hellip; Continue reading &rarr;\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/08\/SiteSettings.png\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Adri\u00e1n D\u00edaz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/asignar-permisos-mediante-programacion\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/asignar-permisos-mediante-programacion\\\/\"},\"author\":{\"name\":\"Adri\u00e1n D\u00edaz\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"headline\":\"Asignar permisos mediante programaci\u00f3n en sitios multiidioma\",\"datePublished\":\"2014-09-02T10:00:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/asignar-permisos-mediante-programacion\\\/\"},\"wordCount\":945,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/asignar-permisos-mediante-programacion\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2014\\\/08\\\/SiteSettings-300x183.png\",\"keywords\":[\"buenas practicas\",\"permisos\"],\"articleSection\":[\"buenas practicas\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/asignar-permisos-mediante-programacion\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/asignar-permisos-mediante-programacion\\\/\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/asignar-permisos-mediante-programacion\\\/\",\"name\":\"Asignar permisos mediante programaci\u00f3n en sitios multiidioma - Desarrollando sobre SharePoint\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/asignar-permisos-mediante-programacion\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/asignar-permisos-mediante-programacion\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2014\\\/08\\\/SiteSettings-300x183.png\",\"datePublished\":\"2014-09-02T10:00:55+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/asignar-permisos-mediante-programacion\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/asignar-permisos-mediante-programacion\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2014\\\/08\\\/SiteSettings.png\",\"contentUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2014\\\/08\\\/SiteSettings.png\",\"width\":741,\"height\":453,\"caption\":\"Site Settings Language Settings\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/\",\"name\":\"Desarrollando sobre SharePoint\",\"description\":\"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\",\"name\":\"Adri\u00e1n D\u00edaz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"caption\":\"Adri\u00e1n D\u00edaz\"},\"description\":\"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/author\\\/desarrollandosobresharepoint\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Asignar permisos mediante programaci\u00f3n en sitios multiidioma - Desarrollando sobre SharePoint","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/asignar-permisos-mediante-programacion\/","twitter_card":"summary_large_image","twitter_title":"Asignar permisos mediante programaci\u00f3n en sitios multiidioma - Desarrollando sobre SharePoint","twitter_description":"Cuando vamos a abordar\u00a0un proyecto que es multiidioma debemos de tener en cuenta diversas particularidades a la hora de implementar nuestros desarrollos. M\u00e1s o menos todos tenemos\u00a0en cuenta los ficheros de recursos para hacer que la interfaz (que va a &hellip; Continue reading &rarr;","twitter_image":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/08\/SiteSettings.png","twitter_misc":{"Escrito por":"Adri\u00e1n D\u00edaz","Tiempo de lectura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/asignar-permisos-mediante-programacion\/#article","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/asignar-permisos-mediante-programacion\/"},"author":{"name":"Adri\u00e1n D\u00edaz","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"headline":"Asignar permisos mediante programaci\u00f3n en sitios multiidioma","datePublished":"2014-09-02T10:00:55+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/asignar-permisos-mediante-programacion\/"},"wordCount":945,"commentCount":0,"image":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/asignar-permisos-mediante-programacion\/#primaryimage"},"thumbnailUrl":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/08\/SiteSettings-300x183.png","keywords":["buenas practicas","permisos"],"articleSection":["buenas practicas"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/asignar-permisos-mediante-programacion\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/asignar-permisos-mediante-programacion\/","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/asignar-permisos-mediante-programacion\/","name":"Asignar permisos mediante programaci\u00f3n en sitios multiidioma - Desarrollando sobre SharePoint","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/asignar-permisos-mediante-programacion\/#primaryimage"},"image":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/asignar-permisos-mediante-programacion\/#primaryimage"},"thumbnailUrl":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/08\/SiteSettings-300x183.png","datePublished":"2014-09-02T10:00:55+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/asignar-permisos-mediante-programacion\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/asignar-permisos-mediante-programacion\/#primaryimage","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/08\/SiteSettings.png","contentUrl":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/08\/SiteSettings.png","width":741,"height":453,"caption":"Site Settings Language Settings"},{"@type":"WebSite","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/","name":"Desarrollando sobre SharePoint","description":"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb","name":"Adri\u00e1n D\u00edaz","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","caption":"Adri\u00e1n D\u00edaz"},"description":"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/author\/desarrollandosobresharepoint\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1345","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/comments?post=1345"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1345\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/media?parent=1345"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/categories?post=1345"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/tags?post=1345"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}