{"id":1657,"date":"2024-05-13T16:46:40","date_gmt":"2024-05-13T16:46:40","guid":{"rendered":"https:\/\/structr.com\/security-access-control\/"},"modified":"2024-05-16T14:07:07","modified_gmt":"2024-05-16T14:07:07","slug":"security-access-control","status":"publish","type":"page","link":"https:\/\/structr.com\/en\/product\/features\/security-access-control\/","title":{"rendered":"Security &#038; Access Control"},"content":{"rendered":"<div class=\"wpb-content-wrapper\"><p>[vc_section row_bg_image_behavior=&#8221;bg&#8211;image&#8211;beh-fixed&#8221; row_bg_image_position=&#8221;bg&#8211;image&#8211;pos-tc&#8221; row_bg_image_repeat=&#8221;bg&#8211;image-no-repeat&#8221; row_bg_image=&#8221;1878&#8243;][vc_row row_padding=&#8221;&#8221;][vc_column]<div class=\"   wpb_content_element\" ><div class=\"hero hero--b hero--center vpt-15\"><div class=\"hero__content\"><div class=\"hero__title\"><div class=\"hero__skyline\">Maximum security on three levels<\/div><h1>Security &amp; Access Control<\/h1><\/div><p class=\"hero__text\">Create maximum security through customized control for each access path and pattern by defining users, groups, roles, type and schema-dependent permissions as well as individual access rights at object level.<\/p><\/div><div class=\"hero__image\"><img decoding=\"async\" src=\"https:\/\/structr.com\/wp-content\/uploads\/Structr_Screenshot_Resource-Access-1024x597.jpg\" srcset=\"https:\/\/structr.com\/wp-content\/uploads\/Structr_Screenshot_Resource-Access-300x175.jpg 300w, https:\/\/structr.com\/wp-content\/uploads\/Structr_Screenshot_Resource-Access-1024x597.jpg 1024w, https:\/\/structr.com\/wp-content\/uploads\/Structr_Screenshot_Resource-Access-768x448.jpg 768w, https:\/\/structr.com\/wp-content\/uploads\/Structr_Screenshot_Resource-Access-1536x895.jpg 1536w, https:\/\/structr.com\/wp-content\/uploads\/Structr_Screenshot_Resource-Access.jpg 2048w\" alt=\"\" \/><\/div><\/div><\/div>[\/vc_column][\/vc_row][\/vc_section][vc_section row_padding=&#8221;vpt-7 vpb-7&#8243;][vc_row row_padding=&#8221;custom&#8221; row_padding_bottom=&#8221;vpb-7&#8243;][vc_column width=&#8221;5\/6&#8243; col_sticky=&#8221;&#8221; offset=&#8221;vc_col-md-offset-2 vc_col-md-8 vc_col-sm-offset-1&#8243;]<div class=\"vmb-3 wpb_content_element\" ><div class=\"svg-image svg-image--center \"><div class=\"svg-image__inner\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/structr.com\/wp-content\/uploads\/Structr_Feature_Resource-Access-Permissions.svg\" alt=\"\" width=\"42\" height=\"42\" \/><\/div><\/div><\/div><div class=\"vmb-1 wpb_content_element\" ><div class=\"heading heading--h2 heading--center\"><h2 class=\"heading   heading--center\" >Comprehensive Security and Access Control<\/h2><\/div><\/div>[vc_column_text]<\/p>\n<p class=\"big-text\" style=\"text-align: center;\"><strong>Ensure maximum security with Structr&#8217;s customizable access control system. Define users, groups, roles, and permissions at type, schema, and object levels for tailored protection. Our system supports hierarchical group structures, LDAP synchronization, and various authentication protocols. Benefit from fast rights resolution with graph database technology, ensuring efficient and secure access management for complex enterprise needs.<\/strong><\/p>\n<p>[\/vc_column_text]<div class=\"vmb-3 wpb_content_element\" ><div class=\"btn__wrapper btn__wrapper--center\"><a href=\"https:\/\/structr.com\/product\/features\/security-access-control\/#inquiry\" target=\"\" rel=\"\" title=\"Page Builder\" class=\"btn--full btn--secondary btn--md\">Get in touch<\/a><\/div><\/div>[\/vc_column][\/vc_row][vc_row row_padding=&#8221;custom&#8221; row_padding_bottom=&#8221;vpb-5&#8243;][vc_column width=&#8221;2\/3&#8243; col_sticky=&#8221;&#8221; offset=&#8221;vc_col-lg-6 vc_col-md-7 vc_col-sm-offset-1&#8243;]<div class=\"vmb-1 wpb_content_element\" ><div class=\"heading heading--h2 \"><p class=\"heading--subtitle  \" ><span class=\"heading--subtitle__dot heading--subtitle__dot--right \" data-line=\"line-1\" data-socket=\"right\" data-gravity=\"50\"><\/span>Security &amp; Access Control<\/p><h2 class=\"heading h3 heading--subtitle-top \" >Users, Groups and Roles<\/h2><\/div><\/div>[vc_column_text]In order to make the content and functions of Structr applications accessible to people with different tasks and privileges, individual users can be created or synchronized from directory services.<\/p>\n<p>The group memberships that can be defined via the admin user interface or the directory data allow authorizations to be assigned based on roles, as multiple memberships and groups with any level of nesting are also possible.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_padding=&#8221;custom&#8221; row_padding_bottom=&#8221;vpb-10&#8243;][vc_column width=&#8221;7\/12&#8243; col_sticky=&#8221;&#8221;][vc_single_image image=&#8221;1639&#8243; img_size=&#8221;large&#8221; image_shadow=&#8221;shadow-lg&#8221;][\/vc_column][vc_column width=&#8221;5\/12&#8243; col_sticky=&#8221;&#8221; offset=&#8221;vc_col-lg-offset-1 vc_col-lg-4&#8243;]<div class=\"vmb-3 pt60-md wpb_content_element\" ><div class=\"list-box\"><div class=\"dot list-box__dot list-box__dot--top \" data-line=\"line-1\" data-socket=\"top\" data-gravity=\"50\"><\/div><p class=\"list-box__title \">Advantages<\/p><ul class=\"list-box__list\"><li>Users and hierarchical group structures<br \/><\/li><li>Multiple membership and any nesting depth<br \/><\/li><li>Synchronization with LDAP directory services possible<br \/><\/li><li>Authentication via OAuth, web tokens and other protocols<br \/><\/li><li>SHA-512-based salted password hashes<\/li><\/ul><\/div><\/div>[\/vc_column][\/vc_row][vc_row content_placement=&#8221;middle&#8221; row_padding=&#8221;custom&#8221; row_padding_bottom=&#8221;vpb-10&#8243;][vc_column width=&#8221;7\/12&#8243; col_sticky=&#8221;&#8221; col_pp_sm=&#8221;vc_col-sm-push-5&#8243;][vc_row_inner row_padding=&#8221;custom&#8221; row_padding_bottom=&#8221;vpb-5&#8243;][vc_column_inner width=&#8221;5\/6&#8243; offset=&#8221;vc_col-sm-offset-2&#8243;]<div class=\"vmb-1 wpb_content_element\" ><div class=\"heading heading--h2 \"><p class=\"heading--subtitle  \" ><span class=\"heading--subtitle__dot heading--subtitle__dot--left \" data-line=\"line-2\" data-socket=\"left\" data-gravity=\"50\"><\/span>Security &amp; Access Control<\/p><h2 class=\"heading h3 heading--subtitle-top \" >Type and schema-based authorizations<\/h2><\/div><\/div>[vc_column_text]In order to manage permissions for the elements to be accessed more efficiently, patterns can be defined in Structr, e.g. by using the schema topology or grouping objects based on their type.<\/p>\n<p>These types of authorizations are compiled when changes are made and resolved extremely quickly at runtime without the need for additional database calls.[\/vc_column_text][\/vc_column_inner][\/vc_row_inner][vc_single_image image=&#8221;1639&#8243; img_size=&#8221;large&#8221; image_shadow=&#8221;shadow-lg&#8221;][\/vc_column][vc_column width=&#8221;5\/12&#8243; col_sticky=&#8221;&#8221; col_pp_sm=&#8221;vc_col-sm-pull-7&#8243; col_pp_lg=&#8221;vc_col-lg-pull-8&#8243; offset=&#8221;vc_col-lg-offset-1 vc_col-lg-4&#8243;]<div class=\"vmb-3 pt60-md wpb_content_element\" ><div class=\"list-box\"><div class=\"dot list-box__dot list-box__dot--top \" data-line=\"line-2\" data-socket=\"top\" data-gravity=\"50\"><\/div><p class=\"list-box__title \">Advantages<\/p><ul class=\"list-box__list\"><li>Grouping of similar objects by type and schema topology<br \/><\/li><li>Assignment via easy-to-use tools in the admin interface<br \/><\/li><li>Programmatic authorization assignment possible via APIs<br \/><\/li><li>Extremely fast rights resolution through the use of compiled code<\/li><\/ul><\/div><\/div>[\/vc_column][\/vc_row][vc_row content_placement=&#8221;middle&#8221; row_padding=&#8221;custom&#8221; row_padding_bottom=&#8221;vpb-5&#8243;][vc_column width=&#8221;7\/12&#8243; col_sticky=&#8221;&#8221;][vc_row_inner row_padding=&#8221;custom&#8221; row_padding_bottom=&#8221;vpb-5&#8243;][vc_column_inner width=&#8221;5\/6&#8243; offset=&#8221;vc_col-sm-offset-2&#8243;]<div class=\"vmb-1 wpb_content_element\" ><div class=\"heading heading--h2 \"><p class=\"heading--subtitle  \" ><span class=\"heading--subtitle__dot heading--subtitle__dot--right \" data-line=\"line-3\" data-socket=\"right\" data-gravity=\"50\"><\/span>Security &amp; Access Control<\/p><h2 class=\"heading h3 heading--subtitle-top \" >Individual access rights at object level<\/h2><\/div><\/div>[vc_column_text]Finally, access to individual objects can also be granted or blocked for users and groups. With this and in combination with the functions listed above, almost all conceivable security concepts can be implemented, which is essential for sophisticated enterprise solutions.<\/p>\n<p>The resolution of the defined rights at runtime is usually very detrimental to performance and takes longer the more and the more complex the authorization patterns defined. By using a graph database for rights resolution, Structr achieves only a linearly increasing slowdown, while other systems experience an exponential decrease in resolution speed, which often makes complex use cases impossible.[\/vc_column_text][\/vc_column_inner][\/vc_row_inner][vc_single_image image=&#8221;1639&#8243; img_size=&#8221;large&#8221; image_shadow=&#8221;shadow-lg&#8221;][\/vc_column][vc_column width=&#8221;5\/12&#8243; col_sticky=&#8221;&#8221; offset=&#8221;vc_col-lg-offset-1 vc_col-lg-4&#8243;]<div class=\"vmb-3 pt60-md wpb_content_element\" ><div class=\"list-box\"><div class=\"dot list-box__dot list-box__dot--top \" data-line=\"line-3\" data-socket=\"top\" data-gravity=\"50\"><\/div><p class=\"list-box__title \">Advantages<\/p><ul class=\"list-box__list\"><li>Individual access protection down to the level of individual objects<br \/><\/li><li>Uncompromising use of authorizations possible thanks to high resolution speed<br \/><\/li><li>No exponential, but at most linearly increasing effort for authorization resolution<br \/><\/li><li>Even high security requirements with complex authorizations can be implemented<\/li><\/ul><\/div><\/div>[\/vc_column][\/vc_row][\/vc_section][vc_row row_padding=&#8221;&#8221; row_maxwidth=&#8221;&#8221;][vc_column]<div class=\"templatera_shortcode\"><section id=\"inquiry\" class=\"vc_section vpt-7 vpb-7 bg--color--grey-5 bg--image--pos-tc bg--image--beh-fixed bg--image-no-repeat bg-image-18796a6957a523e3e\"><div class=\"vc_container vc_maxwidth \"><div class=\"vc_row wpb_row vc_row-fluid vpt-3 vpb-3\"><div class=\"wpb_column vc_column_container vc_col-sm-7 vc_col-lg-offset-1\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"vmb-3 wpb_content_element\" ><div class=\"heading heading--p \"><p class=\"heading--subtitle  \" ><span class=\"heading--subtitle__dot heading--subtitle__dot--left \" data-line=\"line-form\" data-socket=\"left\" data-gravity=\"50\"><\/span>Get in touch with Structr<\/p><p class=\"heading h2 heading--subtitle-top \" >We are interested in the use of Structr<\/p><\/div><\/div><script>\nvar gform;gform||(document.addEventListener(\"gform_main_scripts_loaded\",function(){gform.scriptsLoaded=!0}),document.addEventListener(\"gform\/theme\/scripts_loaded\",function(){gform.themeScriptsLoaded=!0}),window.addEventListener(\"DOMContentLoaded\",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,themeScriptsLoaded:!1,isFormEditor:()=>\"function\"==typeof InitializeEditor,callIfLoaded:function(o){return!(!gform.domLoaded||!gform.scriptsLoaded||!gform.themeScriptsLoaded&&!gform.isFormEditor()||(gform.isFormEditor()&&console.warn(\"The use of gform.initializeOnLoaded() is deprecated in the form editor context and will be removed in Gravity Forms 3.1.\"),o(),0))},initializeOnLoaded:function(o){gform.callIfLoaded(o)||(document.addEventListener(\"gform_main_scripts_loaded\",()=>{gform.scriptsLoaded=!0,gform.callIfLoaded(o)}),document.addEventListener(\"gform\/theme\/scripts_loaded\",()=>{gform.themeScriptsLoaded=!0,gform.callIfLoaded(o)}),window.addEventListener(\"DOMContentLoaded\",()=>{gform.domLoaded=!0,gform.callIfLoaded(o)}))},hooks:{action:{},filter:{}},addAction:function(o,r,e,t){gform.addHook(\"action\",o,r,e,t)},addFilter:function(o,r,e,t){gform.addHook(\"filter\",o,r,e,t)},doAction:function(o){gform.doHook(\"action\",o,arguments)},applyFilters:function(o){return gform.doHook(\"filter\",o,arguments)},removeAction:function(o,r){gform.removeHook(\"action\",o,r)},removeFilter:function(o,r,e){gform.removeHook(\"filter\",o,r,e)},addHook:function(o,r,e,t,n){null==gform.hooks[o][r]&&(gform.hooks[o][r]=[]);var d=gform.hooks[o][r];null==n&&(n=r+\"_\"+d.length),gform.hooks[o][r].push({tag:n,callable:e,priority:t=null==t?10:t})},doHook:function(r,o,e){var t;if(e=Array.prototype.slice.call(e,1),null!=gform.hooks[r][o]&&((o=gform.hooks[r][o]).sort(function(o,r){return o.priority-r.priority}),o.forEach(function(o){\"function\"!=typeof(t=o.callable)&&(t=window[t]),\"action\"==r?t.apply(null,e):e[0]=t.apply(null,e)})),\"filter\"==r)return e[0]},removeHook:function(o,r,t,n){var e;null!=gform.hooks[o][r]&&(e=(e=gform.hooks[o][r]).filter(function(o,r,e){return!!(null!=n&&n!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][r]=e)}});\n<\/script>\n\n                <div class='gf_browser_gecko gform_wrapper gravity-theme gform-theme--no-framework' data-form-theme='gravity-theme' data-form-index='0' id='gform_wrapper_11' style='display:none'><form method='post' enctype='multipart\/form-data'  id='gform_11'  action='\/en\/wp-json\/wp\/v2\/pages\/1657' data-formid='11' novalidate>\t\t\t\t\t<div style=\"display: none !important;\" class=\"akismet-fields-container gf_invisible\" data-prefix=\"ak_\">\n\t\t\t\t\t\t<label>&#916;<textarea name=\"ak_hp_textarea\" cols=\"45\" rows=\"8\" maxlength=\"100\"><\/textarea><\/label>\n\t\t\t\t\t\t<input type=\"hidden\" id=\"ak_js_1\" name=\"ak_js\" value=\"250\" \/>\n\t\t\t\t\t\t<script>\ndocument.getElementById( \"ak_js_1\" ).setAttribute( \"value\", ( new Date() ).getTime() );\n<\/script>\n\n\t\t\t\t\t<\/div>\n                        <div class='gform-body gform_body'><div id='gform_fields_11' class='gform_fields top_label form_sublabel_below description_below validation_below'><div id=\"field_11_17\" class=\"gfield gfield--type-honeypot gform_validation_container field_sublabel_below gfield--has-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_11_17'>Instagram<\/label><div class='ginput_container'><input name='input_17' id='input_11_17' type='text' value='' autocomplete='new-password'\/><\/div><div class='gfield_description' id='gfield_description_11_17'>This field is for validation purposes and should be left unchanged.<\/div><\/div><div id=\"field_11_15\" class=\"gfield gfield--type-text gfield--input-type-text gfield--width-full visuallyhidden field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_11_15'>Source<\/label><div class='ginput_container ginput_container_text'><input name='input_15' id='input_11_15' type='text' value='' class='large'      aria-invalid=\"false\"   \/><\/div><\/div><fieldset id=\"field_11_13\" class=\"gfield gfield--type-radio gfield--type-choice gfield--input-type-radio gfield--width-full big-choice big-choice--dot gfield_contains_required field_sublabel_below gfield--has-description field_description_below field_validation_below gfield_visibility_visible\"  ><legend class='gfield_label gform-field-label' >We would like to \u2026<span class=\"gfield_required\"><span class=\"gfield_required gfield_required_text\">(Required)<\/span><\/span><\/legend><div class='ginput_container ginput_container_radio'><div class='gfield_radio' id='input_11_13'>\n\t\t\t<div class='gchoice gchoice_11_13_0'>\n\t\t\t\t\t<input class='gfield-choice-input' name='input_13' type='radio' value='inquiry' checked='checked' id='choice_11_13_0' onchange='gformToggleRadioOther( this )' aria-describedby=\"gfield_description_11_13\"   \/>\n\t\t\t\t\t<label for='choice_11_13_0' id='label_11_13_0' class='gform-field-label gform-field-label--type-inline'>make an inquiry<\/label>\n\t\t\t<\/div>\n\t\t\t<div class='gchoice gchoice_11_13_1'>\n\t\t\t\t\t<input class='gfield-choice-input' name='input_13' type='radio' value='callback'  id='choice_11_13_1' onchange='gformToggleRadioOther( this )'    \/>\n\t\t\t\t\t<label for='choice_11_13_1' id='label_11_13_1' class='gform-field-label gform-field-label--type-inline'>be called back<\/label>\n\t\t\t<\/div>\n\t\t\t<div class='gchoice gchoice_11_13_2'>\n\t\t\t\t\t<input class='gfield-choice-input' name='input_13' type='radio' value='appointment'  id='choice_11_13_2' onchange='gformToggleRadioOther( this )'    \/>\n\t\t\t\t\t<label for='choice_11_13_2' id='label_11_13_2' class='gform-field-label gform-field-label--type-inline'>make an appointment<\/label>\n\t\t\t<\/div><\/div><\/div><div class='gfield_description' id='gfield_description_11_13'><div class=\"form-dot\" data-line=\"line-form\" data-socket=\"left\" data-gravity=\"50\"><\/div><\/div><\/fieldset><div id=\"field_11_1\" class=\"gfield gfield--type-text gfield--input-type-text gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_11_1'>Company<span class=\"gfield_required\"><span class=\"gfield_required gfield_required_text\">(Required)<\/span><\/span><\/label><div class='ginput_container ginput_container_text'><input name='input_1' id='input_11_1' type='text' value='' class='large'     aria-required=\"true\" aria-invalid=\"false\"   \/><\/div><\/div><div id=\"field_11_3\" class=\"gfield gfield--type-text gfield--input-type-text gfield--width-half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_11_3'>First name<span class=\"gfield_required\"><span class=\"gfield_required gfield_required_text\">(Required)<\/span><\/span><\/label><div class='ginput_container ginput_container_text'><input name='input_3' id='input_11_3' type='text' value='' class='large'     aria-required=\"true\" aria-invalid=\"false\"   \/><\/div><\/div><div id=\"field_11_4\" class=\"gfield gfield--type-text gfield--input-type-text gfield--width-half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_11_4'>Last name<span class=\"gfield_required\"><span class=\"gfield_required gfield_required_text\">(Required)<\/span><\/span><\/label><div class='ginput_container ginput_container_text'><input name='input_4' id='input_11_4' type='text' value='' class='large'     aria-required=\"true\" aria-invalid=\"false\"   \/><\/div><\/div><div id=\"field_11_5\" class=\"gfield gfield--type-email gfield--input-type-email gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_11_5'>E-mail<span class=\"gfield_required\"><span class=\"gfield_required gfield_required_text\">(Required)<\/span><\/span><\/label><div class='ginput_container ginput_container_email'>\n                            <input name='input_5' id='input_11_5' type='email' value='' class='large'    aria-required=\"true\" aria-invalid=\"false\"  \/>\n                        <\/div><\/div><div id=\"field_11_6\" class=\"gfield gfield--type-phone gfield--input-type-phone gfield--width-full field_sublabel_below gfield--has-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_11_6'>Phone (optional)<\/label><div class='ginput_container ginput_container_phone'><input name='input_6' id='input_11_6' type='tel' value='' class='large'    aria-invalid=\"false\" aria-describedby=\"gfield_description_11_6\"  \/><\/div><div class='gfield_description' id='gfield_description_11_6'>\n<\/div><\/div><div id=\"field_11_14\" class=\"gfield gfield--type-phone gfield--input-type-phone gfield--width-full gfield_contains_required field_sublabel_below gfield--has-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_11_14'>Phone<span class=\"gfield_required\"><span class=\"gfield_required gfield_required_text\">(Required)<\/span><\/span><\/label><div class='ginput_container ginput_container_phone'><input name='input_14' id='input_11_14' type='tel' value='' class='large'   aria-required=\"true\" aria-invalid=\"false\" aria-describedby=\"gfield_description_11_14\"  \/><\/div><div class='gfield_description' id='gfield_description_11_14'>\n<\/div><\/div><div id=\"field_11_11\" class=\"gfield gfield--type-select gfield--input-type-select gfield--width-half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_11_11'>Project status<span class=\"gfield_required\"><span class=\"gfield_required gfield_required_text\">(Required)<\/span><\/span><\/label><div class='ginput_container ginput_container_select'><select name='input_11' id='input_11_11' class='large gfield_select'    aria-required=\"true\" aria-invalid=\"false\" ><option value='' selected='selected' class='gf_placeholder'>Please choose \u2026<\/option><option value='Conception' >Conception<\/option><option value='Technology evaluation' >Technology evaluation<\/option><option value='Looking for project partners' >Looking for project partners<\/option><option value='Ongoing project' >Ongoing project<\/option><option value='Need emergency support' >Need emergency support<\/option><\/select><\/div><\/div><div id=\"field_11_12\" class=\"gfield gfield--type-select gfield--input-type-select gfield--width-half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_11_12'>Budget<span class=\"gfield_required\"><span class=\"gfield_required gfield_required_text\">(Required)<\/span><\/span><\/label><div class='ginput_container ginput_container_select'><select name='input_12' id='input_11_12' class='large gfield_select'    aria-required=\"true\" aria-invalid=\"false\" ><option value='' selected='selected' class='gf_placeholder'>Please choose \u2026<\/option><option value='&lt; 100,000 USD\/EUR' >&lt; 100,000 USD\/EUR<\/option><option value='100,000 \u2013 250,000 USD\/EUR' >100,000 \u2013 250,000 USD\/EUR<\/option><option value='250,000 \u2013 500,000 USD\/EUR' >250,000 \u2013 500,000 USD\/EUR<\/option><option value='500,000+ USD\/EUR' >500,000+ USD\/EUR<\/option><option value='Non-profit \/ No budget' >Non-profit \/ No budget<\/option><\/select><\/div><\/div><div id=\"field_11_9\" class=\"gfield gfield--type-textarea gfield--input-type-textarea gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_11_9'>Project description<span class=\"gfield_required\"><span class=\"gfield_required gfield_required_text\">(Required)<\/span><\/span><\/label><div class='ginput_container ginput_container_textarea'><textarea name='input_9' id='input_11_9' class='textarea medium'     aria-required=\"true\" aria-invalid=\"false\"   rows='10' cols='50'><\/textarea><\/div><\/div><fieldset id=\"field_11_10\" class=\"gfield gfield--type-consent gfield--type-choice gfield--input-type-consent gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible\"  ><legend class='gfield_label gform-field-label gfield_label_before_complex' >Privacy policy<span class=\"gfield_required\"><span class=\"gfield_required gfield_required_text\">(Required)<\/span><\/span><\/legend><div class='ginput_container ginput_container_consent'><input name='input_10.1' id='input_11_10_1' type='checkbox' value='1'   aria-required=\"true\" aria-invalid=\"false\"   \/> <label class=\"gform-field-label gform-field-label--type-inline gfield_consent_label\" for='input_11_10_1' >I agree to the privacy policy on <a href=\"https:\/\/structr.com\/privacy\" target=\"_blank\">structr.com\/privacy<\/a> and consent to Structr GmbH sending me an evaluation license key and further information to my e-mail address given here.<span class=\"gfield_required gfield_required_text\">(Required)<\/span><\/label><input type='hidden' name='input_10.2' value='I agree to the privacy policy on &lt;a href=&quot;https:\/\/structr.com\/privacy&quot; target=&quot;_blank&quot;&gt;structr.com\/privacy&lt;\/a&gt; and consent to Structr GmbH sending me an evaluation license key and further information to my e-mail address given here.' class='gform_hidden' \/><input type='hidden' name='input_10.3' value='11' class='gform_hidden' \/><\/div><\/fieldset><div id=\"field_11_16\" class=\"gfield gfield--type-html gfield--input-type-html gfield--width-full gfield_html gfield_no_follows_desc field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><div class=\"vpt-3\">\n<a href=\"https:\/\/calendly.com\/contact-structr\" target=\"_blank\" class=\"btn--full btn--primary btn--md\" rel=\"noopener\">Choose a slot<\/a>\n<\/div><\/div><\/div><\/div>\n        <div class='gform-footer gform_footer top_label'> <input type='submit' id='gform_submit_button_11' class='gform_button button' onclick='gform.submission.handleButtonClick(this);' data-submission-type='submit' value='Submit'  \/> \n            <input type='hidden' class='gform_hidden' name='gform_submission_method' data-js='gform_submission_method_11' value='postback' \/>\n            <input type='hidden' class='gform_hidden' name='gform_theme' data-js='gform_theme_11' id='gform_theme_11' value='gravity-theme' \/>\n            <input type='hidden' class='gform_hidden' name='gform_style_settings' data-js='gform_style_settings_11' id='gform_style_settings_11' value='[]' \/>\n            <input type='hidden' class='gform_hidden' name='is_submit_11' value='1' \/>\n            <input type='hidden' class='gform_hidden' name='gform_submit' value='11' \/>\n            \n            <input type='hidden' class='gform_hidden' name='gform_currency' data-currency='EUR' value='05RexHDnCDUOHcC+c+maxwvMe0iX0hiC8N3zehThS3e\/Cz353rNnEWnUP4n7G\/lkR2I52gJbBKKvo8fRRn8Fz0bitGgjOTapwBBZUasuxJ\/zPkE=' \/>\n            <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' \/>\n            <input type='hidden' class='gform_hidden' name='state_11' value='WyJ7XCIxM1wiOltcIjZjMzc5ZjM4NjU2NWU0ZWZmZjk4MGNiNzVkMDkyN2IwXCIsXCI1ZTM1MDcxMWQ5YjE5YzliZDZiZDI0ZGM4M2FiOTVlMFwiLFwiOWMxZTAyNzM5Njg4ZjIwZTQzOTFkZjIwZTU5ODI2ZjdcIl0sXCIxMVwiOltcIjc2ZTcwMzMyM2Q2NWE1M2VkZTJhMDk1MTdjMjQxYTllXCIsXCJlYjJlZjNjM2JjOTFmYjUyOWY0YTdkMDcxNjQ0MDBmNVwiLFwiN2NhNTIzMjYwZGRmZTc2NDRhMTU4ZWE2NTYzNzRjODlcIixcIjM3YzU5ZDliYTVlZGQxMjM0ZTgyZDI3YzliNzY0NTMxXCIsXCIxN2NiYmQ5ZGM0ODlmYjAwMTA5ZTFkNDY1MTdiOTE4M1wiXSxcIjEyXCI6W1wiYWVhZmIwMGUzZDQ4YjZmZTRjZmEyYTc4MmIwMjA5NDhcIixcIjZkZDIxODlmYjAzNmZhOTkwOWI0MzdiZDJkODcwZDI2XCIsXCJlOGIzOWJkMjA2MmIwYWZhOTU3MDQ2ZjQ5Yjg2NjE2NlwiLFwiZmM0ODgxMjg4NzIwOWY3NzExNDFkYjUwYzg4YWFiMzhcIixcImQ1MjNhZjk3MWUwYmU3NTk2ODI0YTMyZjJlMzdiMmJjXCJdLFwiMTAuMVwiOlwiZGNjYmU4OGQ1MGRkYjMyN2Y2MGJmNGU4OWI1YmM1ZWRcIixcIjEwLjJcIjpcImEyYmY5NzFkNjVjMGE4NWQwZDI5M2ZmNWYzZTY4M2IwXCIsXCIxMC4zXCI6XCI0NDU5N2IwZDNjOWIxYTlkMzBmNWJjZDMwYmYwMWJjMVwifSIsIjQ3NWFkZmI3NzhkMGMyYjY2OTc0ZjY0OWIxZTYyMjBjIl0=' \/>\n            <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_target_page_number_11' id='gform_target_page_number_11' value='0' \/>\n            <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_source_page_number_11' id='gform_source_page_number_11' value='1' \/>\n            <input type='hidden' name='gform_field_values' value='' \/>\n            \n        <\/div>\n                        <\/form>\n                        <\/div><script>\ngform.initializeOnLoaded( function() {gformInitSpinner( 11, 'https:\/\/structr.com\/wp-content\/plugins\/gravityforms\/images\/spinner.svg', true );jQuery('#gform_ajax_frame_11').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_11');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_11').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){form_content.find('form').css('opacity', 0);jQuery('#gform_wrapper_11').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_11').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_11').removeClass('gform_validation_error');}setTimeout( function() { \/* delay the scroll by 50 milliseconds to fix a bug in chrome *\/  }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_11').val();gformInitSpinner( 11, 'https:\/\/structr.com\/wp-content\/plugins\/gravityforms\/images\/spinner.svg', true );jQuery(document).trigger('gform_page_loaded', [11, current_page]);window['gf_submitting_11'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_11').replaceWith(confirmation_content);jQuery(document).trigger('gform_confirmation_loaded', [11]);window['gf_submitting_11'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_11').text());}else{jQuery('#gform_11').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger(\"gform_pre_post_render\", [{ formId: \"11\", currentPage: \"current_page\", abort: function() { this.preventDefault(); } }]);        if (event && event.defaultPrevented) {                return;        }        const gformWrapperDiv = document.getElementById( \"gform_wrapper_11\" );        if ( gformWrapperDiv ) {            const visibilitySpan = document.createElement( \"span\" );            visibilitySpan.id = \"gform_visibility_test_11\";            gformWrapperDiv.insertAdjacentElement( \"afterend\", visibilitySpan );        }        const visibilityTestDiv = document.getElementById( \"gform_visibility_test_11\" );        let postRenderFired = false;        function triggerPostRender() {            if ( postRenderFired ) {                return;            }            postRenderFired = true;            gform.core.triggerPostRenderEvents( 11, current_page );            if ( visibilityTestDiv ) {                visibilityTestDiv.parentNode.removeChild( visibilityTestDiv );            }        }        function debounce( func, wait, immediate ) {            var timeout;            return function() {                var context = this, args = arguments;                var later = function() {                    timeout = null;                    if ( !immediate ) func.apply( context, args );                };                var callNow = immediate && !timeout;                clearTimeout( timeout );                timeout = setTimeout( later, wait );                if ( callNow ) func.apply( context, args );            };        }        const debouncedTriggerPostRender = debounce( function() {            triggerPostRender();        }, 200 );        if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) {            const observer = new MutationObserver( ( mutations ) => {                mutations.forEach( ( mutation ) => {                    if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) {                        debouncedTriggerPostRender();                        observer.disconnect();                    }                });            });            observer.observe( document.body, {                attributes: true,                childList: false,                subtree: true,                attributeFilter: [ 'style', 'class' ],            });        } else {            triggerPostRender();        }    } );} );\n<\/script>\n<\/div><\/div><\/div><div class=\"wpb_column vc_column_container vc_col-sm-3 vc_col-lg-2 vc_col-sm-offset-1\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\">\n\t<div  class=\"wpb_single_image wpb_content_element vc_align_left vmt-3 vmb-3 wpb_content_element\" > \n\t\t\n\t\t<figure class=\"wpb_wrapper vc_figure\">\n\t\t\t<div class=\"vc_single_image-wrapper   \"><img loading=\"lazy\" decoding=\"async\" width=\"203\" height=\"300\" src=\"https:\/\/structr.com\/wp-content\/uploads\/axel-morgner-203x300.jpg\" class=\"vc_single_image-img attachment-medium\" alt=\"\" title=\"axel-morgner\" srcset=\"https:\/\/structr.com\/wp-content\/uploads\/axel-morgner-203x300.jpg 203w, https:\/\/structr.com\/wp-content\/uploads\/axel-morgner.jpg 670w\" sizes=\"auto, (max-width: 203px) 100vw, 203px\" \/><\/div> \n\t\t<\/figure>\n\t<\/div>\n\r\n\t<div  class=\"wpb_text_column wpb_content_element  vmb-3  wpb_content_element\">\r\n\t\t<p>I\u2019m looking forward to your inquiry!<\/p>\n<p><span class=\"color--white\"><strong>Axel Morgner<\/strong><\/span><br \/>\nCEO &amp; CTO<\/p>\n<p>Call <span class=\"color--white\">0800-STRUCTR<\/span><br \/>\n+49 800 \/ 78 78 287<\/p>\n\r\n\t<\/div>\r\n<\/div><\/div><\/div><\/div><\/div><style>.bg-image-18796a6957a523e3e{ background-image: url(\"https:\/\/structr.com\/wp-content\/uploads\/Structr_Background_01.jpg\");}<\/style><\/section><\/div>[\/vc_column][\/vc_row][vc_row row_padding=&#8221;&#8221;][vc_column]<div class=\"templatera_shortcode\"><section class=\"vc_section vpt-7 vpb-7\"><div class=\"vc_container vc_maxwidth \"><div class=\"vc_row wpb_row vc_row-fluid custom vpb-1\"><div class=\"wpb_column vc_column_container vc_col-sm-8 vc_col-lg-6 vc_col-md-7 vc_col-sm-offset-1\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"vmb-3 wpb_content_element\" ><div class=\"heading heading--h2 \"><p class=\"heading--subtitle  \" ><span class=\"heading--subtitle__dot heading--subtitle__dot--left \" data-line=\"card-line-0\" data-socket=\"left\" data-gravity=\"50\"><\/span>Advantages<\/p><h2 class=\"heading  heading--subtitle-top \" >What makes Structr stand out?<\/h2><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vc_container vc_maxwidth \"><div class=\"vc_row wpb_row vc_row-fluid custom\"><div class=\"wpb_column vc_column_container vc_col-sm-12\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"vmb-5 wpb_content_element\" ><div class=\"cards cards--standard cards--3\"><div class=\"cards__item cards__item--1\"><h3 class=\"cards__title h4\"><img loading=\"lazy\" decoding=\"async\" class=\"cards__icon\" src=\"https:\/\/structr.com\/wp-content\/uploads\/2023\/09\/icon-build.svg\" srcset=\"\" alt=\"Build individual software solutions in no time\"  width=\"1\" height=\"1\" \/>Build individual software solutions in no time<\/h3><p class=\"cards__desc\">Feature-rich applications in minutes with the flexibility and speed of Graph technology<\/p><div class=\"cards__dot cards__dot--start\" data-line=\"card-line-0\" data-socket=\"left\" data-gravity=\"30\"><\/div><div class=\"cards__dot cards__dot--end\" data-line=\"card-line-1\" data-socket=\"bottom\" data-gravity=\"0\"><\/div><\/div><div class=\"cards__item cards__item--2\"><h3 class=\"cards__title h4\"><img loading=\"lazy\" decoding=\"async\" class=\"cards__icon\" src=\"https:\/\/structr.com\/wp-content\/uploads\/2023\/09\/icon-graph.svg\" srcset=\"\" alt=\"Control complexity through graph technology\"  width=\"1\" height=\"1\" \/>Control complexity through graph technology<\/h3><p class=\"cards__desc\">No-compromise back-ends and front-ends optimized for each role<\/p><div class=\"cards__dot cards__dot--start\" data-line=\"card-line-1\" data-socket=\"top\" data-gravity=\"0\"><\/div><div class=\"cards__dot cards__dot--end\" data-line=\"card-line-2\" data-socket=\"bottom\" data-gravity=\"0\"><\/div><\/div><div class=\"cards__item cards__item--3\"><h3 class=\"cards__title h4\"><img loading=\"lazy\" decoding=\"async\" class=\"cards__icon\" src=\"https:\/\/structr.com\/wp-content\/uploads\/2023\/09\/icon-stack.svg\" srcset=\"\" alt=\"All-in-one software stack with all necessary tools\"  width=\"1\" height=\"1\" \/>All-in-one software stack with all necessary tools<\/h3><p class=\"cards__desc\">Build real end-to-end solutions without any additional tools or services needed<\/p><div class=\"cards__dot cards__dot--start\" data-line=\"card-line-2\" data-socket=\"top\" data-gravity=\"0\"><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/section>\r\n<\/div>[\/vc_column][\/vc_row]<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"Maximum security on three levelsSecurity &amp; Access ControlCreate maximum security through customized control for each access path and pattern by \u2026","protected":false},"author":1,"featured_media":0,"parent":1391,"menu_order":6,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"class_list":["post-1657","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/structr.com\/en\/wp-json\/wp\/v2\/pages\/1657","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/structr.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/structr.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/structr.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/structr.com\/en\/wp-json\/wp\/v2\/comments?post=1657"}],"version-history":[{"count":5,"href":"https:\/\/structr.com\/en\/wp-json\/wp\/v2\/pages\/1657\/revisions"}],"predecessor-version":[{"id":1896,"href":"https:\/\/structr.com\/en\/wp-json\/wp\/v2\/pages\/1657\/revisions\/1896"}],"up":[{"embeddable":true,"href":"https:\/\/structr.com\/en\/wp-json\/wp\/v2\/pages\/1391"}],"wp:attachment":[{"href":"https:\/\/structr.com\/en\/wp-json\/wp\/v2\/media?parent=1657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}