Permissions
When building functionality, it's good practice to make sure a user has enough permission to perform a certain operation before showing a UI for it. (e.g. displaying an edit or add link/button) Most operations, you can check generically such as "Can X create an Order?" but other's could be more specific such as "Can X edit Y's record." This can be checked through the Soa method HasPermission or through some of the Soa manager objects such as MembershipManager.UpdatePermitted. You can check one operation at a time, or you can request a whole set of operation permissions.
Logged in user can add an order
using Asi.Soa.ClientServices;
using Asi.Soa.Core.DataContracts;
EntityManager entityManager = new EntityManager();
bool hasPermission = entityManager.HasPermission("Add", new IdentityData("Order", string.Empty));
if (!hasPermission)
throw new Exception("Current party does not have permission");
Logged in user can edit an existing record
using Asi.Soa.ClientServices;
using Asi.Soa.Core.DataContracts;
EntityManager entityManager = new EntityManager();
bool hasPermission = entityManager.HasPermission("Add", new IdentityData("Party", "101"));
if (!hasPermission)
throw new Exception("Current party does not have permission");
var membershipManager = new MembershipManager(entityManager);
bool updatePermitted = membershipManager.UpdatePermitted("101");
if (!updatePermitted)
throw new Exception("Current party does not have permission");
Logged in user can Find, Update, Add and Delete a Party
using Asi.Soa.ClientServices;
using Asi.Soa.Core.DataContracts;
EntityManager entityManager = new EntityManager();
var identityData = new IdentityData("Party", string.Empty);
// Retrieve set of permission results
PermissionResultCollection results = entityManager.HasPermission(new PermissionDataCollection
{
new PermissionData("Find", identityData),
new PermissionData("Add", identityData),
new PermissionData("Update", identityData),
new PermissionData("Delete", identityData)
});
// Then each action/operation can be selected from this set
var hasPermission = results.HasPermission("Find", identityData);
if (!hasPermission.HasValue)
throw new Exception("Current party does not have permission for action");
Updated over 5 years ago