expressappframework-403826-data-security-and-safety-security-system-security-object-model-change-a-user-role-in-code.md
This topic describes how to access and edit a user’s role collection in applications with Integrated Mode.
Follow the steps below to replace the “Default” role with “Extended”.
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Actions;
using DevExpress.Persistent.Base;
using DevExpress.ExpressApp.Security;
using DevExpress.Persistent.BaseImpl.PermissionPolicy;
using System.Linq;
// ...
public class SetExtendedRoleController : ViewController {
SimpleAction setExtendedRoleAction;
public SetExtendedRoleController() {
setExtendedRoleAction = new SimpleAction(this, "SetExtendedRole", PredefinedCategory.Edit);
setExtendedRoleAction.Execute += SetExtendedRoleAction_Execute;
}
private void SetExtendedRoleAction_Execute(object sender, SimpleActionExecuteEventArgs e) {
using (IObjectSpace nonSecuredObjectSpace =
((INonsecuredObjectSpaceProvider)Application.ObjectSpaceProvider).CreateNonsecuredObjectSpace()) {
SecurityStrategy security = Application.GetSecurityStrategy();
ApplicationUser user = (ApplicationUser)nonSecuredObjectSpace.GetObject(security.User);
PermissionPolicyRole oldRole = user.Roles.FirstOrDefault(r => r.Name == "Default");
if (oldRole != null) {
PermissionPolicyRole newRole =
nonSecuredObjectSpace.FirstOrDefault<PermissionPolicyRole>(r => r.Name == "Extended");
user.Roles.Remove(oldRole);
user.Roles.Add(newRole);
nonSecuredObjectSpace.CommitChanges();
ObjectSpace.Refresh();
}
}
}
}
See Also
Access the Currently Logged User for Data Filtering, Business Logic, and Security Permissions