<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.mxms.ltd/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bjorn</id>
	<title>MXMS Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.mxms.ltd/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bjorn"/>
	<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php/Special:Contributions/Bjorn"/>
	<updated>2026-04-04T05:33:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=MXMS&amp;diff=280</id>
		<title>MXMS</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=MXMS&amp;diff=280"/>
		<updated>2026-04-03T07:26:47Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Model driven development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is MXMS ==&lt;br /&gt;
[[File:Example-mxms-implementation.png|right|400px|An example implementation using the MXMS framework]]&lt;br /&gt;
&lt;br /&gt;
The MXMS framework enables rapid development of business software solutions by using a structured class entity model in which the database / SQL is maintained and updated by the framework and the UI is built.&lt;br /&gt;
&lt;br /&gt;
MXMS enables rapid development of API&#039;s which exposes certain fuctionality of the entity model in a [[JsonRPC]], [[REST]] or a custom format.&lt;br /&gt;
&lt;br /&gt;
Custom scheduled tasks can be created for background processes to execute to create data synchronisation tasks or other custom workflows.&lt;br /&gt;
&lt;br /&gt;
=== .NET Core ===&lt;br /&gt;
MXMS uses ASP .NET Core as the development platform and is written in C#. The core libraries are written in .NET Standard 2.0 for maximum portability.&lt;br /&gt;
&lt;br /&gt;
== Model driven development ==&lt;br /&gt;
At it&#039;s core a MXMS implementation expects a [[model]] definition which is used to generate the application and it&#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
A model is a collection of [[class|classes]] which contains properties annotated with [[attribute|attributes]] which provides context to the property and methods which provides functionality to the implementation.&lt;br /&gt;
&lt;br /&gt;
=== Entities ===&lt;br /&gt;
=== Properties ===&lt;br /&gt;
=== Methods ===&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
[[File:Example-startup.png|right|400px|MXMS being injected into the ASP.NET pipeline]]&lt;br /&gt;
MXMS has various ways of changing the application configuration. There is a json file which contains basic configuration which changes from instance to instance. The main way to configure the application is through strongly types configuration classes using the options pattern in the startup.cs. The strongly typed configuration can be further filled by creating a module. A module can be re-used to provide certain functionality to implementations. The application configuration can be accessed using the [[Application|application class]]&lt;br /&gt;
&lt;br /&gt;
=== Application configuration ===&lt;br /&gt;
MXMS is injected into the ASP.NET Core pipeline during [[Startup|startup]] of the .NET Core application. MXMS provides injection classes to enable the MXMS application within the ASP.NET Core implementation. Additional [[MXMSConfiguration|ad-hoc configuration]] can be passed during the initial startup of the application. MXMS uses a strongly types class model to confige the application furing startup.&lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
For a modular approach [[Module|modules]] can be created which can be injected into the application. A module is a class which injects configuration options to the application. This module can be re-used in various implementations.&lt;br /&gt;
&lt;br /&gt;
=== mxmsSettings.json ===&lt;br /&gt;
MXMS uses a json file called [[mxmsSettings.json]] to configure specific items between instances. Each instance of the application can have it&#039;s own mxmsSettings.config. The file is using the json format. &lt;br /&gt;
&lt;br /&gt;
The configuration consists of the global mailserver settings which are used to send mails and the connection string which provides storage for the ORM mapper. Additionally MXMS registers when which scheduled process was last run. It uses this information to determine which processes needs executing.&lt;br /&gt;
&lt;br /&gt;
If a [[mxmsSettings.json]] file is not present during application startup an empty configuration file is created which can be edited as required.&lt;br /&gt;
&lt;br /&gt;
=== log4net.config ===&lt;br /&gt;
MXMS uses [https://logging.apache.org/log4net/index.html log4net] to provide logging functionality. This module is configured using the [[log4net.config]] file located in the [[MXMSConfiguration#Workingdirectory|workingdirectory]] of the application.&lt;br /&gt;
&lt;br /&gt;
== Data storage ==&lt;br /&gt;
MXMS uses [https://nhibernate.info NHibernate] as it&#039;s Object Relational Mapper. MXMS feeds NHibernate custom configuration data based on the model which is implemented.&lt;br /&gt;
&lt;br /&gt;
=== ORM ===&lt;br /&gt;
=== Updates ===&lt;br /&gt;
=== Dialects ===&lt;br /&gt;
&lt;br /&gt;
[[File:Image-editing.png|right|400px|Editing an uploaded image with the image editor in MXMS]]&lt;br /&gt;
== File storage ==&lt;br /&gt;
MXMS uses a so called [[MXMSConfiguration#Workingdirectory|workingdirectory]] in which MXMS requires full access. This folder is used to store various files which are either generated, loaded by certain modules or manually uploaded by users using the application.&lt;br /&gt;
&lt;br /&gt;
=== Uploaded media ===&lt;br /&gt;
Users are able to upload and edit media using the [[EntityImage|entityimage]] class. Files uploaded are stored in the &amp;lt;WORKINGDIRECTORY&amp;gt;/media/ folder.&lt;br /&gt;
&lt;br /&gt;
=== Mail templates ===&lt;br /&gt;
The [[MailSender|mail sender]] stores it&#039;s templates in the &amp;lt;WORKINGDIRECTORY&amp;gt;/templates/ folder&lt;br /&gt;
&lt;br /&gt;
== User interface ==&lt;br /&gt;
MXMS uses [https://vuejs.org/ Vue] as it&#039;s javascript client framework to render it&#039;s javascript GUI.&lt;br /&gt;
=== Pages ===&lt;br /&gt;
=== Apps ===&lt;br /&gt;
=== Views ===&lt;br /&gt;
=== Widgets ===&lt;br /&gt;
=== Input controls ===&lt;br /&gt;
=== Custom applications ===&lt;br /&gt;
&lt;br /&gt;
== Background processes ==&lt;br /&gt;
TODO add background process info&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
Various concepts are in place to either grant or deny users specific access to the application.&lt;br /&gt;
&lt;br /&gt;
=== Rights by definition type ===&lt;br /&gt;
The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Rights by definition type&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| [[Entity|Entities]] || Create, Read, Update and Delete&lt;br /&gt;
|-&lt;br /&gt;
| [[Property|Properties]] || Create, Read and Update&lt;br /&gt;
|-&lt;br /&gt;
| [[Method|Methods]] || Execute&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Access modifiers ===&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above the property maximum availability is read access.&lt;br /&gt;
&lt;br /&gt;
=== Attributes ===&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the [[Availability (attribute)|availability attribute]]. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above the property maximum availability is read access.&lt;br /&gt;
&lt;br /&gt;
=== Roles ===&lt;br /&gt;
A [[Role|role]] defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile. Roles are registered and added to the application using [[Module|modules]].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllRead();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above the role has read access to Class1, has full control access to Class2 and update access to Class3. Read access is automatically granted when providing update access.&lt;br /&gt;
&lt;br /&gt;
=== Claims ===&lt;br /&gt;
[[Claim|Claims]] is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added. Claims are registered and added to the application using [[Module|modules]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;br /&gt;
&lt;br /&gt;
== Filters ==&lt;br /&gt;
TODO add filter information&lt;br /&gt;
&lt;br /&gt;
== API development ==&lt;br /&gt;
TODO add [[api|APIs]] info.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=MXMS&amp;diff=279</id>
		<title>MXMS</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=MXMS&amp;diff=279"/>
		<updated>2026-04-03T06:28:47Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Security */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is MXMS ==&lt;br /&gt;
[[File:Example-mxms-implementation.png|right|400px|An example implementation using the MXMS framework]]&lt;br /&gt;
&lt;br /&gt;
The MXMS framework enables rapid development of business software solutions by using a structured class entity model in which the database / SQL is maintained and updated by the framework and the UI is built.&lt;br /&gt;
&lt;br /&gt;
MXMS enables rapid development of API&#039;s which exposes certain fuctionality of the entity model in a [[JsonRPC]], [[REST]] or a custom format.&lt;br /&gt;
&lt;br /&gt;
Custom scheduled tasks can be created for background processes to execute to create data synchronisation tasks or other custom workflows.&lt;br /&gt;
&lt;br /&gt;
=== .NET Core ===&lt;br /&gt;
MXMS uses ASP .NET Core as the development platform and is written in C#. The core libraries are written in .NET Standard 2.0 for maximum portability.&lt;br /&gt;
&lt;br /&gt;
== Model driven development ==&lt;br /&gt;
At it&#039;s core a MXMS implementation expects a [[model]] definition which is used to generate the application and it&#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
A model is a collection of [[class|classes]] which contains properties annotated with [[attribute|attributes]] which provides context to the property and methods which provides functionality to the implementation.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
[[File:Example-startup.png|right|400px|MXMS being injected into the ASP.NET pipeline]]&lt;br /&gt;
MXMS has various ways of changing the application configuration. There is a json file which contains basic configuration which changes from instance to instance. The main way to configure the application is through strongly types configuration classes using the options pattern in the startup.cs. The strongly typed configuration can be further filled by creating a module. A module can be re-used to provide certain functionality to implementations. The application configuration can be accessed using the [[Application|application class]]&lt;br /&gt;
&lt;br /&gt;
=== Application configuration ===&lt;br /&gt;
MXMS is injected into the ASP.NET Core pipeline during [[Startup|startup]] of the .NET Core application. MXMS provides injection classes to enable the MXMS application within the ASP.NET Core implementation. Additional [[MXMSConfiguration|ad-hoc configuration]] can be passed during the initial startup of the application. MXMS uses a strongly types class model to confige the application furing startup.&lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
For a modular approach [[Module|modules]] can be created which can be injected into the application. A module is a class which injects configuration options to the application. This module can be re-used in various implementations.&lt;br /&gt;
&lt;br /&gt;
=== mxmsSettings.json ===&lt;br /&gt;
MXMS uses a json file called [[mxmsSettings.json]] to configure specific items between instances. Each instance of the application can have it&#039;s own mxmsSettings.config. The file is using the json format. &lt;br /&gt;
&lt;br /&gt;
The configuration consists of the global mailserver settings which are used to send mails and the connection string which provides storage for the ORM mapper. Additionally MXMS registers when which scheduled process was last run. It uses this information to determine which processes needs executing.&lt;br /&gt;
&lt;br /&gt;
If a [[mxmsSettings.json]] file is not present during application startup an empty configuration file is created which can be edited as required.&lt;br /&gt;
&lt;br /&gt;
=== log4net.config ===&lt;br /&gt;
MXMS uses [https://logging.apache.org/log4net/index.html log4net] to provide logging functionality. This module is configured using the [[log4net.config]] file located in the [[MXMSConfiguration#Workingdirectory|workingdirectory]] of the application.&lt;br /&gt;
&lt;br /&gt;
== Data storage ==&lt;br /&gt;
MXMS uses [https://nhibernate.info NHibernate] as it&#039;s Object Relational Mapper. MXMS feeds NHibernate custom configuration data based on the model which is implemented.&lt;br /&gt;
&lt;br /&gt;
=== ORM ===&lt;br /&gt;
=== Updates ===&lt;br /&gt;
=== Dialects ===&lt;br /&gt;
&lt;br /&gt;
[[File:Image-editing.png|right|400px|Editing an uploaded image with the image editor in MXMS]]&lt;br /&gt;
== File storage ==&lt;br /&gt;
MXMS uses a so called [[MXMSConfiguration#Workingdirectory|workingdirectory]] in which MXMS requires full access. This folder is used to store various files which are either generated, loaded by certain modules or manually uploaded by users using the application.&lt;br /&gt;
&lt;br /&gt;
=== Uploaded media ===&lt;br /&gt;
Users are able to upload and edit media using the [[EntityImage|entityimage]] class. Files uploaded are stored in the &amp;lt;WORKINGDIRECTORY&amp;gt;/media/ folder.&lt;br /&gt;
&lt;br /&gt;
=== Mail templates ===&lt;br /&gt;
The [[MailSender|mail sender]] stores it&#039;s templates in the &amp;lt;WORKINGDIRECTORY&amp;gt;/templates/ folder&lt;br /&gt;
&lt;br /&gt;
== User interface ==&lt;br /&gt;
MXMS uses [https://vuejs.org/ Vue] as it&#039;s javascript client framework to render it&#039;s javascript GUI.&lt;br /&gt;
=== Pages ===&lt;br /&gt;
=== Apps ===&lt;br /&gt;
=== Views ===&lt;br /&gt;
=== Widgets ===&lt;br /&gt;
=== Input controls ===&lt;br /&gt;
=== Custom applications ===&lt;br /&gt;
&lt;br /&gt;
== Background processes ==&lt;br /&gt;
TODO add background process info&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
Various concepts are in place to either grant or deny users specific access to the application.&lt;br /&gt;
&lt;br /&gt;
=== Rights by definition type ===&lt;br /&gt;
The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Rights by definition type&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| [[Entity|Entities]] || Create, Read, Update and Delete&lt;br /&gt;
|-&lt;br /&gt;
| [[Property|Properties]] || Create, Read and Update&lt;br /&gt;
|-&lt;br /&gt;
| [[Method|Methods]] || Execute&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Access modifiers ===&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above the property maximum availability is read access.&lt;br /&gt;
&lt;br /&gt;
=== Attributes ===&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the [[Availability (attribute)|availability attribute]]. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above the property maximum availability is read access.&lt;br /&gt;
&lt;br /&gt;
=== Roles ===&lt;br /&gt;
A [[Role|role]] defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile. Roles are registered and added to the application using [[Module|modules]].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllRead();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above the role has read access to Class1, has full control access to Class2 and update access to Class3. Read access is automatically granted when providing update access.&lt;br /&gt;
&lt;br /&gt;
=== Claims ===&lt;br /&gt;
[[Claim|Claims]] is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added. Claims are registered and added to the application using [[Module|modules]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;br /&gt;
&lt;br /&gt;
== Filters ==&lt;br /&gt;
TODO add filter information&lt;br /&gt;
&lt;br /&gt;
== API development ==&lt;br /&gt;
TODO add [[api|APIs]] info.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=MXMS&amp;diff=278</id>
		<title>MXMS</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=MXMS&amp;diff=278"/>
		<updated>2026-04-03T06:26:01Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is MXMS ==&lt;br /&gt;
[[File:Example-mxms-implementation.png|right|400px|An example implementation using the MXMS framework]]&lt;br /&gt;
&lt;br /&gt;
The MXMS framework enables rapid development of business software solutions by using a structured class entity model in which the database / SQL is maintained and updated by the framework and the UI is built.&lt;br /&gt;
&lt;br /&gt;
MXMS enables rapid development of API&#039;s which exposes certain fuctionality of the entity model in a [[JsonRPC]], [[REST]] or a custom format.&lt;br /&gt;
&lt;br /&gt;
Custom scheduled tasks can be created for background processes to execute to create data synchronisation tasks or other custom workflows.&lt;br /&gt;
&lt;br /&gt;
=== .NET Core ===&lt;br /&gt;
MXMS uses ASP .NET Core as the development platform and is written in C#. The core libraries are written in .NET Standard 2.0 for maximum portability.&lt;br /&gt;
&lt;br /&gt;
== Model driven development ==&lt;br /&gt;
At it&#039;s core a MXMS implementation expects a [[model]] definition which is used to generate the application and it&#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
A model is a collection of [[class|classes]] which contains properties annotated with [[attribute|attributes]] which provides context to the property and methods which provides functionality to the implementation.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
[[File:Example-startup.png|right|400px|MXMS being injected into the ASP.NET pipeline]]&lt;br /&gt;
MXMS has various ways of changing the application configuration. There is a json file which contains basic configuration which changes from instance to instance. The main way to configure the application is through strongly types configuration classes using the options pattern in the startup.cs. The strongly typed configuration can be further filled by creating a module. A module can be re-used to provide certain functionality to implementations. The application configuration can be accessed using the [[Application|application class]]&lt;br /&gt;
&lt;br /&gt;
=== Application configuration ===&lt;br /&gt;
MXMS is injected into the ASP.NET Core pipeline during [[Startup|startup]] of the .NET Core application. MXMS provides injection classes to enable the MXMS application within the ASP.NET Core implementation. Additional [[MXMSConfiguration|ad-hoc configuration]] can be passed during the initial startup of the application. MXMS uses a strongly types class model to confige the application furing startup.&lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
For a modular approach [[Module|modules]] can be created which can be injected into the application. A module is a class which injects configuration options to the application. This module can be re-used in various implementations.&lt;br /&gt;
&lt;br /&gt;
=== mxmsSettings.json ===&lt;br /&gt;
MXMS uses a json file called [[mxmsSettings.json]] to configure specific items between instances. Each instance of the application can have it&#039;s own mxmsSettings.config. The file is using the json format. &lt;br /&gt;
&lt;br /&gt;
The configuration consists of the global mailserver settings which are used to send mails and the connection string which provides storage for the ORM mapper. Additionally MXMS registers when which scheduled process was last run. It uses this information to determine which processes needs executing.&lt;br /&gt;
&lt;br /&gt;
If a [[mxmsSettings.json]] file is not present during application startup an empty configuration file is created which can be edited as required.&lt;br /&gt;
&lt;br /&gt;
=== log4net.config ===&lt;br /&gt;
MXMS uses [https://logging.apache.org/log4net/index.html log4net] to provide logging functionality. This module is configured using the [[log4net.config]] file located in the [[MXMSConfiguration#Workingdirectory|workingdirectory]] of the application.&lt;br /&gt;
&lt;br /&gt;
== Data storage ==&lt;br /&gt;
MXMS uses [https://nhibernate.info NHibernate] as it&#039;s Object Relational Mapper. MXMS feeds NHibernate custom configuration data based on the model which is implemented.&lt;br /&gt;
&lt;br /&gt;
=== ORM ===&lt;br /&gt;
=== Updates ===&lt;br /&gt;
=== Dialects ===&lt;br /&gt;
&lt;br /&gt;
[[File:Image-editing.png|right|400px|Editing an uploaded image with the image editor in MXMS]]&lt;br /&gt;
== File storage ==&lt;br /&gt;
MXMS uses a so called [[MXMSConfiguration#Workingdirectory|workingdirectory]] in which MXMS requires full access. This folder is used to store various files which are either generated, loaded by certain modules or manually uploaded by users using the application.&lt;br /&gt;
&lt;br /&gt;
=== Uploaded media ===&lt;br /&gt;
Users are able to upload and edit media using the [[EntityImage|entityimage]] class. Files uploaded are stored in the &amp;lt;WORKINGDIRECTORY&amp;gt;/media/ folder.&lt;br /&gt;
&lt;br /&gt;
=== Mail templates ===&lt;br /&gt;
The [[MailSender|mail sender]] stores it&#039;s templates in the &amp;lt;WORKINGDIRECTORY&amp;gt;/templates/ folder&lt;br /&gt;
&lt;br /&gt;
== User interface ==&lt;br /&gt;
MXMS uses [https://vuejs.org/ Vue] as it&#039;s javascript client framework to render it&#039;s javascript GUI.&lt;br /&gt;
=== Pages ===&lt;br /&gt;
=== Apps ===&lt;br /&gt;
=== Views ===&lt;br /&gt;
=== Widgets ===&lt;br /&gt;
=== Input controls ===&lt;br /&gt;
=== Custom applications ===&lt;br /&gt;
&lt;br /&gt;
== Background processes ==&lt;br /&gt;
TODO add background process info&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
Various concepts are in place to either grant or deny users specific access to the application.&lt;br /&gt;
&lt;br /&gt;
=== Rights by definition type ===&lt;br /&gt;
The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Rights by definition type&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| [[Entity|Entities]] || Create, Read, Update and Delete&lt;br /&gt;
|-&lt;br /&gt;
| [[Property|Properties]] || Create, Read and Update&lt;br /&gt;
|-&lt;br /&gt;
| [[Method|Methods]] || Execute&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Access modifiers ===&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above the property maximum availability is read access.&lt;br /&gt;
&lt;br /&gt;
=== Attributes ===&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the [[Availability (attribute)|availability attribute]]. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above the property maximum availability is read access.&lt;br /&gt;
&lt;br /&gt;
=== Roles ===&lt;br /&gt;
A [[Role|role]] defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile. Roles are registered and added to the application using [[Module|modules]].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllRead();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above the role has read access to Class1, has full control access to Class2 and update access to Class3. Read access is automatically granted when providing update access.&lt;br /&gt;
&lt;br /&gt;
=== Claims ===&lt;br /&gt;
[[Claim|Claims]] is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added. Claims are registered and added to the application using [[Module|modules]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Filters ==&lt;br /&gt;
TODO add filter information&lt;br /&gt;
&lt;br /&gt;
== API development ==&lt;br /&gt;
TODO add [[api|APIs]] info.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Log4net.config&amp;diff=277</id>
		<title>Log4net.config</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Log4net.config&amp;diff=277"/>
		<updated>2026-04-03T06:23:44Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To provide a robust logging framework MXMS uses [https://logging.apache.org/log4net/index.html log4net] as it&#039;s logging framework. log4net can be configured using their xml configuration file which should be located in the [[MXMSConfiguration#Workingdirectory|workingdirectory]] and is named log4net.config. Appenders can be added to the log4.net logging engine.&lt;br /&gt;
&lt;br /&gt;
== Example configuration ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;log4net&amp;gt;&lt;br /&gt;
  &amp;lt;root&amp;gt;&lt;br /&gt;
    &amp;lt;priority value=&amp;quot;ERROR&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;rollingFile&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/root&amp;gt;&lt;br /&gt;
  &amp;lt;appender name=&amp;quot;rollingFile&amp;quot; type=&amp;quot;log4net.Appender.RollingFileAppender&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;file type=&amp;quot;log4net.Util.PatternString&amp;quot; value=&amp;quot;mxms\Logs\trace-log.txt&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;lockingModel type=&amp;quot;log4net.Appender.FileAppender+MinimalLock&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;appendToFile value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;rollingStyle value=&amp;quot;Date&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;maximumFileSize value=&amp;quot;5MB&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;layout type=&amp;quot;log4net.Layout.PatternLayout&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;conversionPattern value=&amp;quot; %date %-5level %logger - %message%newline&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/layout&amp;gt;&lt;br /&gt;
    &amp;lt;encoding value=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/appender&amp;gt;&lt;br /&gt;
&amp;lt;/log4net&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=MXMS&amp;diff=276</id>
		<title>MXMS</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=MXMS&amp;diff=276"/>
		<updated>2026-04-03T06:22:22Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Mail templates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is MXMS ==&lt;br /&gt;
[[File:Example-mxms-implementation.png|right|400px|An example implementation using the MXMS framework]]&lt;br /&gt;
&lt;br /&gt;
The MXMS framework enables rapid development of business software solutions by using a structured class entity model in which the database / SQL is maintained and updated by the framework and the UI is built.&lt;br /&gt;
&lt;br /&gt;
MXMS enables rapid development of API&#039;s which exposes certain fuctionality of the entity model in a [[JsonRPC]], [[REST]] or a custom format.&lt;br /&gt;
&lt;br /&gt;
Custom scheduled tasks can be created for background processes to execute to create data synchronisation tasks or other custom workflows.&lt;br /&gt;
&lt;br /&gt;
=== .NET Core ===&lt;br /&gt;
MXMS uses ASP .NET Core as the development platform and is written in C#. The core libraries are written in .NET Standard 2.0 for maximum portability.&lt;br /&gt;
&lt;br /&gt;
== Model driven development ==&lt;br /&gt;
At it&#039;s core a MXMS implementation expects a [[model]] definition which is used to generate the application and it&#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
A model is a collection of [[class|classes]] which contains properties annotated with [[attribute|attributes]] which provides context to the property and methods which provides functionality to the implementation.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
[[File:Example-startup.png|right|400px|MXMS being injected into the ASP.NET pipeline]]&lt;br /&gt;
MXMS has various ways of changing the application configuration. There is a json file which contains basic configuration which changes from instance to instance. The main way to configure the application is through strongly types configuration classes using the options pattern in the startup.cs. The strongly typed configuration can be further filled by creating a module. A module can be re-used to provide certain functionality to implementations. The application configuration can be accessed using the [[Application|application class]]&lt;br /&gt;
&lt;br /&gt;
=== Application configuration ===&lt;br /&gt;
MXMS is injected into the ASP.NET Core pipeline during [[Startup|startup]] of the .NET Core application. MXMS provides injection classes to enable the MXMS application within the ASP.NET Core implementation. Additional [[MXMSConfiguration|ad-hoc configuration]] can be passed during the initial startup of the application. MXMS uses a strongly types class model to confige the application furing startup.&lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
For a modular approach [[Module|modules]] can be created which can be injected into the application. A module is a class which injects configuration options to the application. This module can be re-used in various implementations.&lt;br /&gt;
&lt;br /&gt;
=== mxmsSettings.json ===&lt;br /&gt;
MXMS uses a json file called [[mxmsSettings.json]] to configure specific items between instances. Each instance of the application can have it&#039;s own mxmsSettings.config. The file is using the json format. &lt;br /&gt;
&lt;br /&gt;
The configuration consists of the global mailserver settings which are used to send mails and the connection string which provides storage for the ORM mapper. Additionally MXMS registers when which scheduled process was last run. It uses this information to determine which processes needs executing.&lt;br /&gt;
&lt;br /&gt;
If a [[mxmsSettings.json]] file is not present during application startup an empty configuration file is created which can be edited as required.&lt;br /&gt;
&lt;br /&gt;
=== log4net.config ===&lt;br /&gt;
MXMS uses [https://logging.apache.org/log4net/index.html log4net] to provide logging functionality. This module is configured using the [[log4net.config]] file located in the [[MXMSConfiguration#Workingdirectory|workingdirectory]] of the application.&lt;br /&gt;
&lt;br /&gt;
== Data storage ==&lt;br /&gt;
MXMS uses [https://nhibernate.info NHibernate] as it&#039;s Object Relational Mapper. MXMS feeds NHibernate custom configuration data based on the model which is implemented.&lt;br /&gt;
&lt;br /&gt;
=== ORM ===&lt;br /&gt;
=== Updates ===&lt;br /&gt;
=== Dialects ===&lt;br /&gt;
&lt;br /&gt;
[[File:Image-editing.png|right|400px|Editing an uploaded image with the image editor in MXMS]]&lt;br /&gt;
== File storage ==&lt;br /&gt;
MXMS uses a so called [[MXMSConfiguration#Workingdirectory|workingdirectory]] in which MXMS requires full access. This folder is used to store various files which are either generated, loaded by certain modules or manually uploaded by users using the application.&lt;br /&gt;
&lt;br /&gt;
=== Uploaded media ===&lt;br /&gt;
Users are able to upload and edit media using the [[EntityImage|entityimage]] class. Files uploaded are stored in the &amp;lt;WORKINGDIRECTORY&amp;gt;/media/ folder.&lt;br /&gt;
&lt;br /&gt;
=== Mail templates ===&lt;br /&gt;
The [[MailSender|mail sender]] stores it&#039;s templates in the &amp;lt;WORKINGDIRECTORY&amp;gt;/templates/ folder&lt;br /&gt;
&lt;br /&gt;
== User interface ==&lt;br /&gt;
MXMS uses [https://vuejs.org/ Vue] as it&#039;s javascript client framework to render it&#039;s javascript GUI.&lt;br /&gt;
=== Pages ===&lt;br /&gt;
=== Apps ===&lt;br /&gt;
=== Views ===&lt;br /&gt;
=== Widgets ===&lt;br /&gt;
=== Input controls ===&lt;br /&gt;
=== Custom applications ===&lt;br /&gt;
&lt;br /&gt;
== Background processes ==&lt;br /&gt;
TODO add background process info&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
TODO add security role / claim based info&lt;br /&gt;
&lt;br /&gt;
== Filters ==&lt;br /&gt;
TODO add filter information&lt;br /&gt;
&lt;br /&gt;
== API development ==&lt;br /&gt;
TODO add [[api|APIs]] info.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=275</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=275"/>
		<updated>2026-04-03T06:14:25Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Attributes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Various concepts are in place to either grant or deny users specific access to the application.&lt;br /&gt;
&lt;br /&gt;
== Rights by definition type ==&lt;br /&gt;
The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Rights by definition type&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| [[Entity|Entities]] || Create, Read, Update and Delete&lt;br /&gt;
|-&lt;br /&gt;
| [[Property|Properties]] || Create, Read and Update&lt;br /&gt;
|-&lt;br /&gt;
| [[Method|Methods]] || Execute&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above the property maximum availability is read access.&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the [[Availability (attribute)|availability attribute]]. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above the property maximum availability is read access.&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A [[Role|role]] defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile. Roles are registered and added to the application using [[Module|modules]].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllRead();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above the role has read access to Class1, has full control access to Class2 and update access to Class3. Read access is automatically granted when providing update access.&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
[[Claim|Claims]] is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added. Claims are registered and added to the application using [[Module|modules]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=274</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=274"/>
		<updated>2026-04-03T06:13:15Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Access modifiers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Various concepts are in place to either grant or deny users specific access to the application.&lt;br /&gt;
&lt;br /&gt;
== Rights by definition type ==&lt;br /&gt;
The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Rights by definition type&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| [[Entity|Entities]] || Create, Read, Update and Delete&lt;br /&gt;
|-&lt;br /&gt;
| [[Property|Properties]] || Create, Read and Update&lt;br /&gt;
|-&lt;br /&gt;
| [[Method|Methods]] || Execute&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above the property maximum availability is read access.&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the [[Availability (attribute)|Availability]] attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above the property maximum availability is read access.&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A [[Role|role]] defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile. Roles are registered and added to the application using [[Module|modules]].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllRead();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above the role has read access to Class1, has full control access to Class2 and update access to Class3. Read access is automatically granted when providing update access.&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
[[Claim|Claims]] is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added. Claims are registered and added to the application using [[Module|modules]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=273</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=273"/>
		<updated>2026-04-03T06:12:51Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Attributes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Various concepts are in place to either grant or deny users specific access to the application.&lt;br /&gt;
&lt;br /&gt;
== Rights by definition type ==&lt;br /&gt;
The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Rights by definition type&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| [[Entity|Entities]] || Create, Read, Update and Delete&lt;br /&gt;
|-&lt;br /&gt;
| [[Property|Properties]] || Create, Read and Update&lt;br /&gt;
|-&lt;br /&gt;
| [[Method|Methods]] || Execute&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the [[Availability (attribute)|Availability]] attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above the property maximum availability is read access.&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A [[Role|role]] defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile. Roles are registered and added to the application using [[Module|modules]].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllRead();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above the role has read access to Class1, has full control access to Class2 and update access to Class3. Read access is automatically granted when providing update access.&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
[[Claim|Claims]] is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added. Claims are registered and added to the application using [[Module|modules]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=272</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=272"/>
		<updated>2026-04-03T06:12:16Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Roles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Various concepts are in place to either grant or deny users specific access to the application.&lt;br /&gt;
&lt;br /&gt;
== Rights by definition type ==&lt;br /&gt;
The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Rights by definition type&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| [[Entity|Entities]] || Create, Read, Update and Delete&lt;br /&gt;
|-&lt;br /&gt;
| [[Property|Properties]] || Create, Read and Update&lt;br /&gt;
|-&lt;br /&gt;
| [[Method|Methods]] || Execute&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the [[Availability (attribute)|Availability]] attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A [[Role|role]] defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile. Roles are registered and added to the application using [[Module|modules]].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllRead();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above the role has read access to Class1, has full control access to Class2 and update access to Class3. Read access is automatically granted when providing update access.&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
[[Claim|Claims]] is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added. Claims are registered and added to the application using [[Module|modules]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=271</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=271"/>
		<updated>2026-04-03T06:09:43Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Rights by definition type */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Various concepts are in place to either grant or deny users specific access to the application.&lt;br /&gt;
&lt;br /&gt;
== Rights by definition type ==&lt;br /&gt;
The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Rights by definition type&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| [[Entity|Entities]] || Create, Read, Update and Delete&lt;br /&gt;
|-&lt;br /&gt;
| [[Property|Properties]] || Create, Read and Update&lt;br /&gt;
|-&lt;br /&gt;
| [[Method|Methods]] || Execute&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the [[Availability (attribute)|Availability]] attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A [[Role|role]] defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile. Roles are registered and added to the application using [[Module|modules]].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
[[Claim|Claims]] is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added. Claims are registered and added to the application using [[Module|modules]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=270</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=270"/>
		<updated>2026-04-03T06:09:06Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Rights by definition type */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Various concepts are in place to either grant or deny users specific access to the application.&lt;br /&gt;
&lt;br /&gt;
== Rights by definition type ==&lt;br /&gt;
The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Rights by definition type&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| [[Entity|Entities]] || Create, Read, Update and Delete&lt;br /&gt;
|-&lt;br /&gt;
| Properties || Create, Read and Update&lt;br /&gt;
|-&lt;br /&gt;
| [[Method|Methods]] || Execute&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the [[Availability (attribute)|Availability]] attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A [[Role|role]] defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile. Roles are registered and added to the application using [[Module|modules]].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
[[Claim|Claims]] is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added. Claims are registered and added to the application using [[Module|modules]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=269</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=269"/>
		<updated>2026-04-03T06:08:21Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Claims */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Various concepts are in place to either grant or deny users specific access to the application.&lt;br /&gt;
&lt;br /&gt;
== Rights by definition type ==&lt;br /&gt;
The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Rights by definition type&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| Entities || Create, Read, Update and Delete&lt;br /&gt;
|-&lt;br /&gt;
| Properties || Create, Read and Update&lt;br /&gt;
|-&lt;br /&gt;
| Methods || Execute&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the [[Availability (attribute)|Availability]] attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A [[Role|role]] defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile. Roles are registered and added to the application using [[Module|modules]].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
[[Claim|Claims]] is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added. Claims are registered and added to the application using [[Module|modules]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=268</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=268"/>
		<updated>2026-04-03T06:08:04Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Roles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Various concepts are in place to either grant or deny users specific access to the application.&lt;br /&gt;
&lt;br /&gt;
== Rights by definition type ==&lt;br /&gt;
The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Rights by definition type&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| Entities || Create, Read, Update and Delete&lt;br /&gt;
|-&lt;br /&gt;
| Properties || Create, Read and Update&lt;br /&gt;
|-&lt;br /&gt;
| Methods || Execute&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the [[Availability (attribute)|Availability]] attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A [[Role|role]] defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile. Roles are registered and added to the application using [[Module|modules]].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
[[Claim|Claims]] is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=267</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=267"/>
		<updated>2026-04-03T06:05:39Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Various concepts are in place to either grant or deny users specific access to the application.&lt;br /&gt;
&lt;br /&gt;
== Rights by definition type ==&lt;br /&gt;
The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Rights by definition type&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| Entities || Create, Read, Update and Delete&lt;br /&gt;
|-&lt;br /&gt;
| Properties || Create, Read and Update&lt;br /&gt;
|-&lt;br /&gt;
| Methods || Execute&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the [[Availability (attribute)|Availability]] attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A [[Role|role]] defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
[[Claim|Claims]] is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=266</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=266"/>
		<updated>2026-04-03T06:04:32Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Attributes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= lkjsflkdsf dslkfjdsl f =&lt;br /&gt;
Various concepts are in place to either grant or deny users specific access to the application. The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Rights by definition type&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| Entities || Create, Read, Update and Delete&lt;br /&gt;
|-&lt;br /&gt;
| Properties || Create, Read and Update&lt;br /&gt;
|-&lt;br /&gt;
| Methods || Execute&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the [[Availability (attribute)|Availability]] attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A [[Role|role]] defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
[[Claim|Claims]] is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=265</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=265"/>
		<updated>2026-04-03T06:03:34Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Claims */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= lkjsflkdsf dslkfjdsl f =&lt;br /&gt;
Various concepts are in place to either grant or deny users specific access to the application. The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Rights by definition type&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| Entities || Create, Read, Update and Delete&lt;br /&gt;
|-&lt;br /&gt;
| Properties || Create, Read and Update&lt;br /&gt;
|-&lt;br /&gt;
| Methods || Execute&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A [[Role|role]] defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
[[Claim|Claims]] is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=264</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=264"/>
		<updated>2026-04-03T06:03:23Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Roles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= lkjsflkdsf dslkfjdsl f =&lt;br /&gt;
Various concepts are in place to either grant or deny users specific access to the application. The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Rights by definition type&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| Entities || Create, Read, Update and Delete&lt;br /&gt;
|-&lt;br /&gt;
| Properties || Create, Read and Update&lt;br /&gt;
|-&lt;br /&gt;
| Methods || Execute&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A [[Role|role]] defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
Claims is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=263</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=263"/>
		<updated>2026-04-03T06:02:19Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* lkjsflkdsf dslkfjdsl f */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= lkjsflkdsf dslkfjdsl f =&lt;br /&gt;
Various concepts are in place to either grant or deny users specific access to the application. The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Rights by definition type&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| Entities || Create, Read, Update and Delete&lt;br /&gt;
|-&lt;br /&gt;
| Properties || Create, Read and Update&lt;br /&gt;
|-&lt;br /&gt;
| Methods || Execute&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
Claims is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=262</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=262"/>
		<updated>2026-04-03T06:02:00Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* lkjsflkdsf dslkfjdsl f */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= lkjsflkdsf dslkfjdsl f =&lt;br /&gt;
Various concepts are in place to either grant or deny users specific access to the application. The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Table Title&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| Entities || Create, Read, Update and Delete&lt;br /&gt;
|-&lt;br /&gt;
| Properties || Create, Read and Update&lt;br /&gt;
|-&lt;br /&gt;
| Methods || Execute&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
Claims is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=261</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=261"/>
		<updated>2026-04-03T06:01:27Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* lkjsflkdsf dslkfjdsl f */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= lkjsflkdsf dslkfjdsl f =&lt;br /&gt;
Various concepts are in place to either grant or deny users specific access to the application. The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Table Title&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| Entities || Row 1, Cell 2&lt;br /&gt;
|-&lt;br /&gt;
| Properties || Row 2, Cell 2&lt;br /&gt;
|-&lt;br /&gt;
| Methods || Row 2, Cell 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This can be Create, Read, Update and Delete rights for [[Entity|entities]]. &lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
Claims is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=260</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=260"/>
		<updated>2026-04-03T06:01:08Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* lkjsflkdsf dslkfjdsl f */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= lkjsflkdsf dslkfjdsl f =&lt;br /&gt;
Various concepts are in place to either grant or deny users specific access to the application. The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Table Title&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| Entities || Row 1, Cell 2&lt;br /&gt;
|-&lt;br /&gt;
| Row 2, Cell 1 || Row 2, Cell 2&lt;br /&gt;
|-&lt;br /&gt;
| Row 2, Cell 1 || Row 2, Cell 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This can be Create, Read, Update and Delete rights for [[Entity|entities]]. &lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
Claims is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=259</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=259"/>
		<updated>2026-04-03T06:00:58Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* lkjsflkdsf dslkfjdsl f */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= lkjsflkdsf dslkfjdsl f =&lt;br /&gt;
Various concepts are in place to either grant or deny users specific access to the application. The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Table Title&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| Entities || Row 1, Cell 2&lt;br /&gt;
|-&lt;br /&gt;
| Row 2, Cell 1 || Row 2, Cell 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This can be Create, Read, Update and Delete rights for [[Entity|entities]]. &lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
Claims is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=258</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=258"/>
		<updated>2026-04-03T06:00:45Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* lkjsflkdsf dslkfjdsl f */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= lkjsflkdsf dslkfjdsl f =&lt;br /&gt;
Various concepts are in place to either grant or deny users specific access to the application. The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Table Title&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| Entities || Row 1, Cell 2&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Row 2, Cell 1 || Row 2, Cell 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This can be Create, Read, Update and Delete rights for [[Entity|entities]]. &lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
Claims is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=257</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=257"/>
		<updated>2026-04-03T06:00:30Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* lkjsflkdsf dslkfjdsl f */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= lkjsflkdsf dslkfjdsl f =&lt;br /&gt;
Various concepts are in place to either grant or deny users specific access to the application. The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Table Title&lt;br /&gt;
! Type !! Permissions&lt;br /&gt;
|-&lt;br /&gt;
| Row 1, Cell 1 || Row 1, Cell 2&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Row 2, Cell 1 || Row 2, Cell 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This can be Create, Read, Update and Delete rights for [[Entity|entities]]. &lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
Claims is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=256</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=256"/>
		<updated>2026-04-03T06:00:11Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* lkjsflkdsf dslkfjdsl f */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= lkjsflkdsf dslkfjdsl f =&lt;br /&gt;
Various concepts are in place to either grant or deny users specific access to the application. The following permissions are available for each type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Table Title&lt;br /&gt;
! Header 1 !! Header 2&lt;br /&gt;
|-&lt;br /&gt;
| Row 1, Cell 1 || Row 1, Cell 2&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Row 2, Cell 1 || Row 2, Cell 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This can be Create, Read, Update and Delete rights for [[Entity|entities]]. &lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
Claims is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=255</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=255"/>
		<updated>2026-04-03T05:59:02Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* lkjsflkdsf dslkfjdsl f */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= lkjsflkdsf dslkfjdsl f =&lt;br /&gt;
Various concepts are in place to either grant or deny users specific access to the application. This can be Create, Read, Update and Delete rights for [[Entity|entities]].&lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
Claims is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=254</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=254"/>
		<updated>2026-04-03T05:58:49Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* lkjsflkdsf dslkfjdsl f */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= lkjsflkdsf dslkfjdsl f =&lt;br /&gt;
Various concepts are in place to either grant or deny users specific access to the application. This can be Creat, Read, Update and Delete rights for [[Entity|entities]]&lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
Claims is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=253</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=253"/>
		<updated>2026-04-03T05:58:36Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* lkjsflkdsf dslkfjdsl f */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= lkjsflkdsf dslkfjdsl f =&lt;br /&gt;
Various concepts are in place to either grant or deny users specific access to the application. This can be Creat, Read, Update and Deete rights for [[Entity|entities]]&lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
Claims is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=252</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=252"/>
		<updated>2026-04-03T05:58:27Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* lkjsflkdsf dslkfjdsl f */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= lkjsflkdsf dslkfjdsl f =&lt;br /&gt;
Various concepts are in place to either grant or deny users specific access to the application. This can be Creat, Read, Update and Deete rights for [Entity|entities]&lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
Claims is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=251</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=251"/>
		<updated>2026-04-03T05:56:30Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= lkjsflkdsf dslkfjdsl f =&lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
Claims is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=250</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=250"/>
		<updated>2026-04-03T05:56:16Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;lkjsflkdsf dslkfjdsl f&lt;br /&gt;
&lt;br /&gt;
== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
Claims is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=249</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=249"/>
		<updated>2026-04-03T05:54:30Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Claims */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
Claims is another form to limit access to properties or methods. By adding a claim the entity&#039;s state determines if the policy is added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example the method MyMethod() is denied access if the BooleanCheck value is true.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=248</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=248"/>
		<updated>2026-04-03T05:51:43Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Attributes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access if access modifiers are not feasible is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=247</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=247"/>
		<updated>2026-04-03T05:50:48Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Access modifiers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only public access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=246</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=246"/>
		<updated>2026-04-03T05:50:34Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Access modifiers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Access modifiers ==&lt;br /&gt;
The maximum allowed permissions for a property or method is based on the access modifiers of the property. Only publisc access modifiers can be accessed by users. This is based on the getter (read access) and the setter (write access).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=245</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=245"/>
		<updated>2026-04-03T05:48:26Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Access modifiers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Access modifiers ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual string ExampleProperty&lt;br /&gt;
{&lt;br /&gt;
    get; &lt;br /&gt;
    protected set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=244</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=244"/>
		<updated>2026-04-03T05:47:36Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Access modifiers ==&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
To further limit access is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=243</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=243"/>
		<updated>2026-04-03T05:46:08Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Claims */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
    {&lt;br /&gt;
        return entity.BooleanCheck;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
    {&lt;br /&gt;
        policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
Another way to limit access is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=242</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=242"/>
		<updated>2026-04-03T05:45:10Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Claims */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleClaim : Claim&amp;lt;CustomEntity&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	protected override bool CanApply(CustomEntity entity)&lt;br /&gt;
	{&lt;br /&gt;
		return entity.BooleanCheck;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	protected override void Set(CodedAccessPolicyBuilder&amp;lt;CustomEntity&amp;gt; policy)&lt;br /&gt;
	{&lt;br /&gt;
		policy.DenyMethod(i =&amp;gt; i.MyMethod());&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&lt;br /&gt;
Another way to limit access is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=241</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=241"/>
		<updated>2026-04-03T05:43:03Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Attributes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
== Attributes ==&lt;br /&gt;
Another way to limit access is by using the Availability attribute. This attribute defines the maximum available permissions for a property. The options are None, Writeonly and Readonly. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=240</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=240"/>
		<updated>2026-04-03T05:40:16Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Attributes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
== Attributes ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Availability(Availability.ReadOnly)]&lt;br /&gt;
public virtual string Name&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=239</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=239"/>
		<updated>2026-04-03T05:38:23Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Roles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class ExampleAccessProfile : CodedAccessProfile&lt;br /&gt;
{&lt;br /&gt;
    protected override void Configure()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class1&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
&lt;br /&gt;
        Set&amp;lt;Class2&amp;gt;()&lt;br /&gt;
            .AllowAllCreate()&lt;br /&gt;
            .AllowAllUpdate()&lt;br /&gt;
            .AllowDelete();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
== Attributes ==&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=238</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=238"/>
		<updated>2026-04-03T05:36:55Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: /* Roles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Roles ==&lt;br /&gt;
A role defines which classes, properties and methods the user has access to. A user can be added in multiple roles and the cummultative permission set of classes, properties and methods will be the users final access profile.&lt;br /&gt;
&lt;br /&gt;
== Claims ==&lt;br /&gt;
== Attributes ==&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=Security&amp;diff=237</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=Security&amp;diff=237"/>
		<updated>2026-04-03T05:34:22Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: Created page with &amp;quot; == Roles == == Claims == == Attributes ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Roles ==&lt;br /&gt;
== Claims ==&lt;br /&gt;
== Attributes ==&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=ConditionalAvailability_(attribute)&amp;diff=236</id>
		<title>ConditionalAvailability (attribute)</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=ConditionalAvailability_(attribute)&amp;diff=236"/>
		<updated>2026-04-03T05:32:29Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Conditional-Availability.png|right|400px|An example usage of the Conditional availability attribute]]&lt;br /&gt;
The ConditionalAvailability attribute is used to show a property only when it&#039;s attribute condition is met. The condition must be defined in the class where the condition is defined. Determination of the condition is client side only.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual bool Enabled&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[ConditionalAvailability(&amp;quot;Enabled&amp;quot;, ConditionalAvailabilityMode.Equals, true)]&lt;br /&gt;
public virtual string ConditionalProperty&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In de example above property ConditionalProperty will be visible only when the Enabled Property is true. If a user changes the Enabled property the ConditionalProperty becomes available immediately without first saving.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=File:Conditional-Availability.png&amp;diff=235</id>
		<title>File:Conditional-Availability.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=File:Conditional-Availability.png&amp;diff=235"/>
		<updated>2026-04-03T05:31:19Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=ConditionalAvailability_(attribute)&amp;diff=234</id>
		<title>ConditionalAvailability (attribute)</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=ConditionalAvailability_(attribute)&amp;diff=234"/>
		<updated>2026-04-03T05:26:35Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ConditionalAvailability attribute is used to show a property only when it&#039;s attribute condition is met. The condition must be defined in the class where the condition is defined. Determination of the condition is client side only.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual bool Enabled&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[ConditionalAvailability(&amp;quot;Enabled&amp;quot;, ConditionalAvailabilityMode.Equals, true)]&lt;br /&gt;
public virtual string ConditionalProperty&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In de example above property ConditionalProperty will be visible only when the Enabled Property is true. If a user changes the Enabled property the ConditionalProperty becomes available immediately without first saving.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=ConditionalAvailability_(attribute)&amp;diff=233</id>
		<title>ConditionalAvailability (attribute)</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=ConditionalAvailability_(attribute)&amp;diff=233"/>
		<updated>2026-04-03T05:25:27Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ConditionalAvailability attribute is used to show a property only when it&#039;s attribute condition is met.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual bool Enabled&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[ConditionalAvailability(&amp;quot;Enabled&amp;quot;, ConditionalAvailabilityMode.Equals, true)]&lt;br /&gt;
public virtual string ConditionalProperty&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In de example above property ConditionalProperty will be visible only when the Enabled Property is true. If a user changes the Enabled property the ConditionalProperty becomes available immediately without first saving.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=ConditionalAvailability_(attribute)&amp;diff=232</id>
		<title>ConditionalAvailability (attribute)</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=ConditionalAvailability_(attribute)&amp;diff=232"/>
		<updated>2026-04-03T05:23:59Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ConditionalAvailability attribute is used to show a property only when it&#039;s attribute condition is met.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public virtual bool Enabled&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[ConditionalAvailability(&amp;quot;Enabled&amp;quot;, ConditionalAvailabilityMode.Equals, true)]&lt;br /&gt;
public virtual string ConditionalProperty&lt;br /&gt;
{&lt;br /&gt;
    get; set;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
	<entry>
		<id>http://wiki.mxms.ltd/index.php?title=ConditionalAvailability_(attribute)&amp;diff=231</id>
		<title>ConditionalAvailability (attribute)</title>
		<link rel="alternate" type="text/html" href="http://wiki.mxms.ltd/index.php?title=ConditionalAvailability_(attribute)&amp;diff=231"/>
		<updated>2026-04-03T05:02:30Z</updated>

		<summary type="html">&lt;p&gt;Bjorn: Created page with &amp;quot;The ConditionalAvailability attribute is used to show a property only when it&amp;#039;s attribute condition is met.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ConditionalAvailability attribute is used to show a property only when it&#039;s attribute condition is met.&lt;/div&gt;</summary>
		<author><name>Bjorn</name></author>
	</entry>
</feed>