{"id":267,"date":"2009-10-29T16:14:46","date_gmt":"2009-10-29T21:14:46","guid":{"rendered":"http:\/\/www.1oc.com\/blog\/?p=267"},"modified":"2009-10-29T16:14:46","modified_gmt":"2009-10-29T21:14:46","slug":"genexus-work-with-pattern-under-gxportal","status":"publish","type":"post","link":"http:\/\/blog.1oc.com\/?p=267","title":{"rendered":"GeneXus Work With Pattern under gxPortal"},"content":{"rendered":"<p>Whit this example we&#8217;ll show how to create ANY groups under gxPortal, and apply certain privileges, or GRANT privileges to those groups, to perform the basic MODES under Genexus.<\/p>\n<p>That is:<\/p>\n<p>DSP &#8211; Display<\/p>\n<p>DLT &#8211; Delete<\/p>\n<p>UPD &#8211; Update<\/p>\n<p>INS &#8211; Insert (Create)<\/p>\n<p>EXP &#8211; Export<\/p>\n<p>So, when you &#8220;put&#8221; a Work With Pattern under the portal, all those Privileges are Guarantee to work automatically.<\/p>\n<h2>First Step.<\/h2>\n<p>On the Application we are working under the portal, let&#8217;s create the following 5 Activities:<\/p>\n<p><a rel=\"attachment wp-att-280\" href=\"http:\/\/www.1oc.com\/blog\/?attachment_id=280\"><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-280\" title=\"WW_List_ALL\" src=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_List_ALL-300x216.png\" alt=\"WW_List_ALL\" width=\"300\" height=\"216\" srcset=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_List_ALL-300x216.png 300w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_List_ALL-414x300.png 414w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_List_ALL.png 614w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><a rel=\"attachment wp-att-283\" href=\"http:\/\/www.1oc.com\/blog\/?attachment_id=283\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-283\" title=\"WW_EXP\" src=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_EXP-300x211.png\" alt=\"WW_EXP\" width=\"300\" height=\"211\" srcset=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_EXP-300x211.png 300w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_EXP-426x300.png 426w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_EXP.png 618w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><a rel=\"attachment wp-att-284\" href=\"http:\/\/www.1oc.com\/blog\/?attachment_id=284\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-284\" title=\"WW_INS\" src=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_INS-300x216.png\" alt=\"WW_INS\" width=\"300\" height=\"216\" srcset=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_INS-300x216.png 300w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_INS-416x300.png 416w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_INS.png 611w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><a rel=\"attachment wp-att-285\" href=\"http:\/\/www.1oc.com\/blog\/?attachment_id=285\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-285\" title=\"WW_UPD\" src=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_UPD-300x215.png\" alt=\"WW_UPD\" width=\"300\" height=\"215\" srcset=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_UPD-300x215.png 300w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_UPD-417x300.png 417w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_UPD.png 615w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><a rel=\"attachment wp-att-286\" href=\"http:\/\/www.1oc.com\/blog\/?attachment_id=286\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-286\" title=\"WW_DSP\" src=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_DSP-300x214.png\" alt=\"WW_DSP\" width=\"300\" height=\"214\" srcset=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_DSP-300x214.png 300w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_DSP-419x300.png 419w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_DSP.png 612w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><a rel=\"attachment wp-att-287\" href=\"http:\/\/www.1oc.com\/blog\/?attachment_id=287\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-287\" title=\"WW_DLT\" src=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_DLT-300x216.png\" alt=\"WW_DLT\" width=\"300\" height=\"216\" srcset=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_DLT-300x216.png 300w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_DLT-416x300.png 416w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_DLT.png 612w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>As you can see on the pictures bellow there is a special Activity, that we call WWUsers_ALL which in terms, includes ALL the rest, what this means, is that the &#8220;group&#8221; that is assigned this Applications has &#8220;Admin&#8221; privileges, ALL the privileges<\/p>\n<p><a rel=\"attachment wp-att-290\" href=\"http:\/\/www.1oc.com\/blog\/?attachment_id=290\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-290\" title=\"WW_ALL\" src=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_ALL-300x216.png\" alt=\"WW_ALL\" width=\"300\" height=\"216\" srcset=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_ALL-300x216.png 300w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_ALL-416x300.png 416w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_ALL.png 616w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><a rel=\"attachment wp-att-303\" href=\"http:\/\/www.1oc.com\/blog\/?attachment_id=303\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-303\" title=\"WW_ALL_Activities\" src=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_ALL_Activities-300x208.png\" alt=\"WW_ALL_Activities\" width=\"300\" height=\"208\" srcset=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_ALL_Activities-300x208.png 300w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_ALL_Activities-432x300.png 432w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/WW_ALL_Activities.png 623w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<h2>Second Step<\/h2>\n<p>There is a Procedure that is called by the WW every time they are executed, and its &#8220;isAuthorized&#8221;<\/p>\n<p>Here&#8217;s where we&#8217;re going to put some code:<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; color: #928f17;\">&amp;Authorized<span style=\"color: #000000;\"> = True<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\">LoadContext.<span style=\"color: #011f90;\">Call<\/span>(<span style=\"color: #928f17;\">&amp;Context<\/span>)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #928f17;\">&amp;Context<\/span>.Porta_access_DLT = false<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #928f17;\">&amp;Context<\/span>.Portal_access_DSP = false<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #928f17;\">&amp;Context<\/span>.Portal_access_EXP = false<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #928f17;\">&amp;Context<\/span>.Portal_access_INS = false<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #928f17;\">&amp;Context<\/span>.Portal_access_UPD = false<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; min-height: 9.0px;\">\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; min-height: 9.0px;\">\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; min-height: 9.0px;\">\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; color: #0c8e12;\"><span style=\"color: #000000;\"> <\/span>\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Check GXportal Security \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #928f17;\">&amp;GXPConnInf<\/span>.DBConnection.Type \u00a0 = GXPDBConnectionType.LAN<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #928f17;\">&amp;GXPActivity<\/span> = New GXPActivitySDT()<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; color: #928f17;\"><span style=\"color: #000000;\"> <\/span>&amp;GXPActivity<span style=\"color: #000000;\">.Name \u00a0 = <\/span><span style=\"color: #b33d3a;\">lower<\/span><span style=\"color: #000000;\">(<\/span>&amp;GxObject<span style=\"color: #000000;\">)<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; color: #928f17;\"><span style=\"color: #000000;\"> <\/span>&amp;GXPChkSec<span style=\"color: #000000;\">.Activities.Add(<\/span>&amp;GXPActivity<span style=\"color: #000000;\">)<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #928f17;\">&amp;GXPActivity<\/span> = New GXPActivitySDT()<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Name \u00a0 = <span style=\"color: #9c1309;\">!&#8221;WWUsers_&#8221;<\/span> + GAMMode.INS<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; color: #928f17;\"><span style=\"color: #000000;\"> <\/span>&amp;GXPChkSec<span style=\"color: #000000;\">.Activities.Add(<\/span>&amp;GXPActivity<span style=\"color: #000000;\">)<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #928f17;\">&amp;GXPActivity<\/span> = New GXPActivitySDT()<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Name \u00a0 = <span style=\"color: #9c1309;\">!&#8221;WWUsers_&#8221;<\/span> + GAMMode.DSP<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; color: #928f17;\"><span style=\"color: #000000;\"> <\/span>&amp;GXPChkSec<span style=\"color: #000000;\">.Activities.Add(<\/span>&amp;GXPActivity<span style=\"color: #000000;\">)<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #928f17;\">&amp;GXPActivity<\/span> = New GXPActivitySDT()<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Name \u00a0 = <span style=\"color: #9c1309;\">!&#8221;WWUsers_&#8221;<\/span> + GAMMode.UPD<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; color: #928f17;\"><span style=\"color: #000000;\"> <\/span>&amp;GXPChkSec<span style=\"color: #000000;\">.Activities.Add(<\/span>&amp;GXPActivity<span style=\"color: #000000;\">)<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #928f17;\">&amp;GXPActivity<\/span> = New GXPActivitySDT()<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Name \u00a0 = <span style=\"color: #9c1309;\">!&#8221;WWUsers_&#8221;<\/span> + GAMMode.DLT<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #928f17;\">&amp;GXPChkSec<\/span>.Activities.Add(<span style=\"color: #928f17;\">&amp;GXPActivity<\/span>)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #928f17;\">&amp;GXPActivity<\/span> = New GXPActivitySDT()<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Name \u00a0 = <span style=\"color: #9c1309;\">!&#8221;WWUsers_EXP&#8221;<\/span> <span style=\"color: #0c8e12;\">\/\/ export Data<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #928f17;\">&amp;GXPChkSec<\/span>.Activities.Add(<span style=\"color: #928f17;\">&amp;GXPActivity<\/span>) \u00a0<span style=\"white-space: pre;\"> <\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #011f90;\">Call<\/span>(PGXPCheckSecurity , <span style=\"color: #928f17;\">&amp;GXPChkSec<\/span>, <span style=\"color: #928f17;\">&amp;GXPConnInf<\/span>, <span style=\"color: #928f17;\">&amp;GXPStatus<\/span> )<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; min-height: 9.0px;\">\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; color: #0c8e12;\"><span style=\"color: #000000;\"> <\/span>\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #011f90;\">If<\/span> not <span style=\"color: #b33d3a;\">Null<\/span>(<span style=\"color: #928f17;\">&amp;GXPStatus<\/span>.Id)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; color: #928f17;\"><span style=\"color: #000000;\"><span style=\"white-space: pre;\"> <\/span><\/span>&amp;Authorized<span style=\"color: #000000;\"> = False<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; color: #011f90;\"><span style=\"color: #000000;\"> <\/span>endif<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; min-height: 9.0px;\">\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; color: #0c8e12;\"><span style=\"color: #000000;\"> <\/span>\/\/ Valid Access\u00a0 \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; color: #928f17;\"><span style=\"color: #000000;\"> <\/span><span style=\"color: #011f90;\">For<\/span><span style=\"color: #000000;\"> <\/span>&amp;GXPActivity<span style=\"color: #000000;\"> <\/span><span style=\"color: #011f90;\">In<\/span><span style=\"color: #000000;\"> <\/span>&amp;GXPChkSec<span style=\"color: #000000;\">.Activities<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; color: #0c8e12;\"><span style=\"color: #000000;\"><span style=\"white-space: pre;\"> <\/span><\/span>\/\/msg(&#8216;Name: &#8216; + &amp;GXPActivity.Name + &#8216; &#8211; ProgramName :&#8217; + &amp;GXPActivity.ProgramName + &#8216; &#8211; Status :&#8217; + &amp;GXPActivity.Status + &#8216; &#8211; Access :&#8217; +&amp;GXPActivity.Access)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #011f90;\">Do Case<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; color: #928f17;\"><span style=\"color: #000000;\"><span style=\"white-space: pre;\"> <\/span> <\/span><span style=\"color: #011f90;\">Case<\/span><span style=\"color: #000000;\"> <\/span>&amp;GXPActivity<span style=\"color: #000000;\">.Name = <\/span>&amp;GxObject<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"white-space: pre;\"> <\/span> <span style=\"color: #011f90;\">if<\/span> <span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Access\u00a0 = GAMBoolean.False<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"white-space: pre;\"> <\/span> <span style=\"color: #928f17;\">&amp;Authorized<\/span> = False<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"white-space: pre;\"> <\/span> <span style=\"color: #011f90;\">endif<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"white-space: pre;\"> <\/span> <span style=\"color: #011f90;\">Case<\/span> <span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Name = <span style=\"color: #9c1309;\">!&#8221;WWUsers_&#8221;<\/span> + GAMMode.INS<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"white-space: pre;\"> <\/span><span style=\"color: #928f17;\">&amp;Context<\/span>.Portal_access_INS = <span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Access<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"white-space: pre;\"> <\/span> <span style=\"color: #011f90;\">Case<\/span> <span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Name = <span style=\"color: #9c1309;\">!&#8221;WWUsers_&#8221;<\/span> + GAMMode.DSP<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"white-space: pre;\"> <\/span><span style=\"color: #928f17;\">&amp;Context<\/span>.Portal_access_DSP = <span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Access<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"white-space: pre;\"> <\/span> <span style=\"color: #011f90;\">Case<\/span> <span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Name = <span style=\"color: #9c1309;\">!&#8221;WWUsers_&#8221;<\/span> + GAMMode.UPD<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"white-space: pre;\"> <\/span><span style=\"color: #928f17;\">&amp;Context<\/span>.Portal_access_UPD = <span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Access<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"white-space: pre;\"> <\/span> <span style=\"color: #011f90;\">Case<\/span> <span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Name = <span style=\"color: #9c1309;\">!&#8221;WWUsers_&#8221;<\/span> + GAMMode.DLT<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"white-space: pre;\"> <\/span><span style=\"color: #928f17;\">&amp;Context<\/span>.Porta_access_DLT = <span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Access<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"white-space: pre;\"> <\/span> <span style=\"color: #011f90;\">Case<\/span> <span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Name = <span style=\"color: #9c1309;\">!&#8221;WWUsers_EXP&#8221;<\/span><span style=\"white-space: pre;\"> <\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"white-space: pre;\"> <\/span><span style=\"color: #928f17;\">&amp;Context<\/span>.Portal_access_EXP = <span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Access<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; color: #0c8e12;\"><span style=\"color: #000000;\"><span style=\"white-space: pre;\"> <\/span> <\/span>\/\/ExportExcel.Visible = &amp;GXPActivity.Access<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; color: #0c8e12;\"><span style=\"white-space: pre;\"> <\/span> \/\/TImportExcel.Visible = &amp;GXPActivity.Access<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"color: #011f90;\">EndCase<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; color: #011f90;\"><span style=\"color: #000000;\"> <\/span>EndFor<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; color: #0c8e12;\"><span style=\"color: #000000;\"> <\/span>\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New'; min-height: 9.0px;\">\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px 'Courier New';\"><span style=\"white-space: pre;\"> <\/span>SetContext.<span style=\"color: #011f90;\">Call<\/span>(<span style=\"color: #928f17;\">&amp;Context<\/span>)<\/p>\n<p>After that we are ready to call the WWs from inside the portal<\/p>\n<p>Let&#8217;s just analyze it a little bit:<\/p>\n<p>First we reset the &#8220;Modes&#8221; we&#8217;ll be load in the Context later<\/p>\n<address>&amp;Authorized<span style=\"color: #000000;\"> = True<\/span><\/address>\n<address>LoadContext.<span style=\"color: #011f90;\">Call<\/span>(<span style=\"color: #928f17;\">&amp;Context<\/span>)<\/address>\n<address><span style=\"color: #928f17;\">&amp;Context<\/span>.Porta_access_DLT = false<\/address>\n<address><span style=\"color: #928f17;\">&amp;Context<\/span>.Portal_access_DSP = false<\/address>\n<address><span style=\"color: #928f17;\">&amp;Context<\/span>.Portal_access_EXP = false<\/address>\n<address><span style=\"color: #928f17;\">&amp;Context<\/span>.Portal_access_INS = false<\/address>\n<address><span style=\"color: #928f17;\">&amp;Context<\/span>.Portal_access_UPD = false<\/address>\n<p>Then we prepare the &#8220;Actions&#8221; to be checked on the gxPortal<\/p>\n<address>\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Check GXportal Security \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/address>\n<address><span style=\"color: #928f17;\">&amp;GXPConnInf<\/span>.DBConnection.Type \u00a0 = GXPDBConnectionType.LAN<\/address>\n<address><span style=\"color: #928f17;\">&amp;GXPActivity<\/span> = New GXPActivitySDT()<\/address>\n<address>&amp;GXPActivity<span style=\"color: #000000;\">.Name \u00a0 = <\/span><span style=\"color: #b33d3a;\">lower<\/span><span style=\"color: #000000;\">(<\/span>&amp;GxObject<span style=\"color: #000000;\">)<\/span><\/address>\n<address>&amp;GXPChkSec<span style=\"color: #000000;\">.Activities.Add(<\/span>&amp;GXPActivity<span style=\"color: #000000;\">)<\/span><\/address>\n<address><span style=\"color: #928f17;\">&amp;GXPActivity<\/span> = New GXPActivitySDT()<\/address>\n<address><span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Name \u00a0 =\u00a0<span style=\"color: #9c1309;\">!&#8221;WWUsers_&#8221;<\/span> + GAMMode.INS<\/address>\n<address>&amp;GXPChkSec<span style=\"color: #000000;\">.Activities.Add(<\/span>&amp;GXPActivity<span style=\"color: #000000;\">)<\/span><\/address>\n<address><span style=\"color: #928f17;\">&amp;GXPActivity<\/span> = New GXPActivitySDT()<\/address>\n<address><span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Name \u00a0 =\u00a0<span style=\"color: #9c1309;\">!&#8221;WWUsers_&#8221;<\/span> + GAMMode.DSP<\/address>\n<address>&amp;GXPChkSec<span style=\"color: #000000;\">.Activities.Add(<\/span>&amp;GXPActivity<span style=\"color: #000000;\">)<\/span><\/address>\n<address><span style=\"color: #928f17;\">&amp;GXPActivity<\/span> = New GXPActivitySDT()<\/address>\n<address><span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Name \u00a0 =\u00a0<span style=\"color: #9c1309;\">!&#8221;WWUsers_&#8221;<\/span> + GAMMode.UPD<\/address>\n<address>&amp;GXPChkSec<span style=\"color: #000000;\">.Activities.Add(<\/span>&amp;GXPActivity<span style=\"color: #000000;\">)<\/span><\/address>\n<address><span style=\"color: #928f17;\">&amp;GXPActivity<\/span> = New GXPActivitySDT()<\/address>\n<address><span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Name \u00a0 =\u00a0<span style=\"color: #9c1309;\">!&#8221;WWUsers_&#8221;<\/span> + GAMMode.DLT<\/address>\n<address><span style=\"color: #928f17;\">&amp;GXPChkSec<\/span>.Activities.Add(<span style=\"color: #928f17;\">&amp;GXPActivity<\/span>)<\/address>\n<address><span style=\"color: #928f17;\">&amp;GXPActivity<\/span> = New GXPActivitySDT()<\/address>\n<address><span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Name \u00a0 =\u00a0<span style=\"color: #9c1309;\">!&#8221;WWUsers_EXP&#8221;<\/span> <span style=\"color: #0c8e12;\">\/\/ export Data<\/span><\/address>\n<address><span style=\"color: #928f17;\">&amp;GXPChkSec<\/span>.Activities.Add(<span style=\"color: #928f17;\">&amp;GXPActivity<\/span>) \u00a0<span style=\"white-space: pre;\"> <\/span><\/address>\n<address><span style=\"color: #011f90;\">Call<\/span>(PGXPCheckSecurity ,\u00a0<span style=\"color: #928f17;\">&amp;GXPChkSec<\/span>,\u00a0<span style=\"color: #928f17;\">&amp;GXPConnInf<\/span>,\u00a0<span style=\"color: #928f17;\">&amp;GXPStatus<\/span> )<\/address>\n<address>\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/address>\n<div><span style=\"font-family: 'Courier New', 'Times New Roman', 'Bitstream Charter', Times, serif; color: #0c8e12; font-size: xx-small;\"><span style=\"line-height: normal;\"><br \/>\n<\/span><\/span><\/div>\n<p>and here we check that the actual &#8220;program&#8221; (work with) it&#8217;s authorized to be access under the &#8220;current user&#8221;, the user who is logged in the gxPortal<\/p>\n<address><span style=\"color: #011f90;\">Case<\/span><span style=\"color: #000000;\"> <\/span>&amp;GXPActivity<span style=\"color: #000000;\">.Name = <\/span>&amp;GxObject<\/address>\n<address><span style=\"white-space: pre;\"> <\/span><span style=\"color: #011f90;\"> if<\/span> <span style=\"color: #928f17;\">&amp;GXPActivity<\/span>.Access\u00a0 = GAMBoolean.False<\/address>\n<address><span style=\"white-space: pre;\"> <\/span><span style=\"color: #928f17;\"> &amp;Authorized<\/span> = False<\/address>\n<address>endif<\/address>\n<p>And on the rest of the &#8220;case&#8221; we assigned the MODE to the &#8220;Context&#8221; to be used latter.<\/p>\n<p>At this point pretty much ends up the &#8220;automatic&#8221; user control of privileges, now we need to proceed to write \/ apply the rules based on the &#8220;Modes&#8221;<\/p>\n<h2>Third Step<\/h2>\n<p>Now we work on the Transaction&#8217;s Work With Pattern<\/p>\n<p>Once we&#8217;ve applied the Work With Patter, we select the &#8220;Modes&#8221; on the Main Selection Level of the Pattern.<\/p>\n<p><a rel=\"attachment wp-att-307\" href=\"http:\/\/www.1oc.com\/blog\/?attachment_id=307\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-307\" title=\"Screen shot 2009-10-30 at 10.13.37 AM\" src=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-10.13.37-AM-300x155.png\" alt=\"Screen shot 2009-10-30 at 10.13.37 AM\" width=\"300\" height=\"155\" srcset=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-10.13.37-AM-300x155.png 300w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-10.13.37-AM-1024x530.png 1024w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-10.13.37-AM-500x259.png 500w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-10.13.37-AM.png 1079w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>And now we defined the &#8220;Condition&#8221; we want to apply for each MODE, for example, for INSERT we want &#8220;&amp;Context.Portal_access_INS&#8221; to be &#8220;TRUE&#8221;, so we defined it as shown on the next pictures:<\/p>\n<p><a rel=\"attachment wp-att-308\" href=\"http:\/\/www.1oc.com\/blog\/?attachment_id=308\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-308\" title=\"Screen shot 2009-10-30 at 10.16.30 AM\" src=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-10.16.30-AM-155x300.png\" alt=\"Screen shot 2009-10-30 at 10.16.30 AM\" width=\"155\" height=\"300\" srcset=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-10.16.30-AM-155x300.png 155w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-10.16.30-AM.png 306w\" sizes=\"auto, (max-width: 155px) 100vw, 155px\" \/><\/a><\/p>\n<p><a rel=\"attachment wp-att-309\" href=\"http:\/\/www.1oc.com\/blog\/?attachment_id=309\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-309\" title=\"Screen shot 2009-10-30 at 10.16.41 AM\" src=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-10.16.41-AM-300x186.png\" alt=\"Screen shot 2009-10-30 at 10.16.41 AM\" width=\"300\" height=\"186\" srcset=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-10.16.41-AM-300x186.png 300w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-10.16.41-AM-482x300.png 482w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-10.16.41-AM.png 729w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Here you can see an example of how it works with a user logged in with &#8220;DSP&#8221; privileges<\/p>\n<p><a rel=\"attachment wp-att-310\" href=\"http:\/\/www.1oc.com\/blog\/?attachment_id=310\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-310\" title=\"Screen shot 2009-10-30 at 10.40.37 AM\" src=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-10.40.37-AM-300x127.png\" alt=\"Screen shot 2009-10-30 at 10.40.37 AM\" width=\"300\" height=\"127\" srcset=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-10.40.37-AM-300x127.png 300w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-10.40.37-AM-1024x436.png 1024w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-10.40.37-AM-500x213.png 500w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-10.40.37-AM.png 1051w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>And here with &#8220;UPD&#8221; privileges, notice the differences, in the previous one all the options were grayed out, on this one the &#8220;Edit&#8221; it is NOT, so he\/she can edit the record<\/p>\n<p style=\"text-align: center; \"><a rel=\"attachment wp-att-312\" href=\"http:\/\/www.1oc.com\/blog\/?attachment_id=312\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-312\" title=\"Screen shot 2009-10-30 at 11.41.21 AM\" src=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-11.41.21-AM1-300x137.png\" alt=\"Screen shot 2009-10-30 at 11.41.21 AM\" width=\"300\" height=\"137\" srcset=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-11.41.21-AM1-300x137.png 300w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-11.41.21-AM1-500x228.png 500w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-11.41.21-AM1.png 1000w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p style=\"text-align: left; \">So far everything it&#8217;s working fine, but here is where it gets a little bit tricky, take a look at the next images showing the &#8220;TABs&#8221; on the Work With:<\/p>\n<p style=\"text-align: left; \"><a rel=\"attachment wp-att-325\" href=\"http:\/\/www.1oc.com\/blog\/?attachment_id=325\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-325\" title=\"Screen shot 2009-10-30 at 12.42.03 PM\" src=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-12.42.03-PM-300x93.png\" alt=\"Screen shot 2009-10-30 at 12.42.03 PM\" width=\"300\" height=\"93\" srcset=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-12.42.03-PM-300x93.png 300w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-12.42.03-PM-500x156.png 500w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-12.42.03-PM.png 1023w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p style=\"text-align: left; \"><a rel=\"attachment wp-att-326\" href=\"http:\/\/www.1oc.com\/blog\/?attachment_id=326\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-326\" title=\"Screen shot 2009-10-30 at 12.42.12 PM\" src=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-12.42.12-PM-300x98.png\" alt=\"Screen shot 2009-10-30 at 12.42.12 PM\" width=\"300\" height=\"98\" srcset=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-12.42.12-PM-300x98.png 300w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-12.42.12-PM-500x163.png 500w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-12.42.12-PM.png 1016w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p style=\"text-align: left; \"><a rel=\"attachment wp-att-327\" href=\"http:\/\/www.1oc.com\/blog\/?attachment_id=327\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-327\" title=\"Screen shot 2009-10-30 at 12.42.25 PM\" src=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-12.42.25-PM-300x100.png\" alt=\"Screen shot 2009-10-30 at 12.42.25 PM\" width=\"300\" height=\"100\" srcset=\"http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-12.42.25-PM-300x100.png 300w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-12.42.25-PM-500x167.png 500w, http:\/\/blog.1oc.com\/wp-content\/uploads\/2009\/10\/Screen-shot-2009-10-30-at-12.42.25-PM.png 1006w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p style=\"text-align: left; \">\n<p style=\"text-align: left; \">As you can see on the pictures above NONE of the privileges have been applied (by default) on the tabs, in order to correct that, we\u00a0\u00a0have to repeat the same procedure for the MODES on each &#8220;TAB&#8221; of the work with.<\/p>\n<p style=\"text-align: left; \">NOTE:<\/p>\n<p style=\"text-align: left; \">There should be a way to apply the same concepts to the &#8220;TRANSACTIONS&#8221; inside the gxPortal, but I haven&#8217;t try anything yet. Please, let me know if you can figure it out an easy way to apply the privileges through the WW inside the Transactions.<\/p>\n<p style=\"text-align: left; \">\n<p style=\"text-align: left; \">Thanks.<\/p>\n<p style=\"text-align: left; \">\n<p style=\"text-align: left; \">\n","protected":false},"excerpt":{"rendered":"<p>Whit this example we&#8217;ll show how to create ANY groups under gxPortal, and apply certain privileges, or GRANT privileges to those groups, to perform the basic MODES under Genexus. That is: DSP &#8211; Display DLT &#8211; Delete UPD &#8211; Update &hellip; <a href=\"http:\/\/blog.1oc.com\/?p=267\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-267","post","type-post","status-publish","format-standard","hentry","category-genexus"],"_links":{"self":[{"href":"http:\/\/blog.1oc.com\/index.php?rest_route=\/wp\/v2\/posts\/267","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.1oc.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.1oc.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.1oc.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.1oc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=267"}],"version-history":[{"count":0,"href":"http:\/\/blog.1oc.com\/index.php?rest_route=\/wp\/v2\/posts\/267\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.1oc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=267"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.1oc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=267"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.1oc.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}