# Role assigning events

Roles determine which parts of Sitefinity CMS a user can view. When a website administrator assigns or modifies the roles assigned to a user, a number of role assigning events are fired. You can subscribe to any of the role assigning events listed below.

For more information about managing roles, see [Overview: Roles](https://www.progress.com/documentation/sitefinity-cms/overview-roles).

## RoleAssignEventBase

This is the base class for events that notifies for changes in roles assigned to users.

In the event handler, you can access the following information:

* ID of the role
* Name of the role
* Name of the role provider
* ID of the user
* Name of the user provider

```C#
using System;
using Telerik.Sitefinity.Abstractions;
using Telerik.Sitefinity.Security.Events;
using Telerik.Sitefinity.Services;

namespace SitefinityWebApp
{
   public class Global : System.Web.HttpApplication
   {
       protected void Application_Start(object sender, EventArgs e)
       {
           Bootstrapper.Bootstrapped += Bootstrapper_Bootstrapped;
       }

       private void Bootstrapper_Bootstrapped(object sender, EventArgs e)
       {
           EventHub.Subscribe<RoleAssignEventBase>(evt => RoleAssignEventHandler(evt));
       }

       public void RoleAssignEventHandler(RoleAssignEventBase eventInfo)
       {
           var roleId = eventInfo.RoleId;
           var roleName = eventInfo.RoleName;
           var roleProviderName = eventInfo.RoleProviderName;
           var userId = eventInfo.UserId;
           var membershipProviderName = eventInfo.MembershipProviderName;
       }

   }
}
```

## RoleAssigning

This event fires when a role is being assigned to a user, that is, it is pending approval.

Your event handler looks like this:

```C#
using System;
using Telerik.Sitefinity.Abstractions;
using Telerik.Sitefinity.Security.Events;
using Telerik.Sitefinity.Services;

namespace SitefinityWebApp
{
   public class Global : System.Web.HttpApplication
   {
       protected void Application_Start(object sender, EventArgs e)
       {
           Bootstrapper.Bootstrapped += Bootstrapper_Bootstrapped;
       }

       private void Bootstrapper_Bootstrapped(object sender, EventArgs e)
       {
           EventHub.Subscribe<RoleAssigning>(evt => RoleAssigningEventHandler(evt));
       }

       public void RoleAssigningEventHandler(RoleAssigning eventInfo)
       {
           // your logic
       }
   }
}
```

## RoleAssigned

This event fires when a profile is already assigned to a user.

Your event handler looks like this:

```C#
using System;
using Telerik.Sitefinity.Abstractions;
using Telerik.Sitefinity.Security.Events;
using Telerik.Sitefinity.Services;

namespace SitefinityWebApp
{
   public class Global : System.Web.HttpApplication
   {
       protected void Application_Start(object sender, EventArgs e)
       {
           Bootstrapper.Bootstrapped += Bootstrapper_Bootstrapped;
       }

       private void Bootstrapper_Bootstrapped(object sender, EventArgs e)
       {
           EventHub.Subscribe<RoleAssigned>(evt => RoleAssignedEventHandler(evt));
       }

       public void RoleAssignedEventHandler(RoleAssigned eventInfo)
       {
           // your logic
       }
   }
}
```

## RoleUnassigning

This event fires when a role is being unassigned from a user.

Your event handler looks like this:

```C#
using System;
using Telerik.Sitefinity.Abstractions;
using Telerik.Sitefinity.Security.Events;
using Telerik.Sitefinity.Services;

namespace SitefinityWebApp
{
   public class Global : System.Web.HttpApplication
   {
       protected void Application_Start(object sender, EventArgs e)
       {
           Bootstrapper.Bootstrapped += Bootstrapper_Bootstrapped;
       }

       private void Bootstrapper_Bootstrapped(object sender, EventArgs e)
       {
           EventHub.Subscribe<RoleUnassigning>(evt => RoleUnassigningEventHandler(evt));
       }

       public void RoleUnassigningEventHandler(RoleUnassigning eventInfo)
       {
           // your logic
       }
   }
}
```

## RoleUnassigned

This event fires when a role is already unassigned from a user.

Your event handler looks like this:

```C#
using System;
using Telerik.Sitefinity.Abstractions;
using Telerik.Sitefinity.Security.Events;
using Telerik.Sitefinity.Services;

namespace SitefinityWebApp
{
   public class Global : System.Web.HttpApplication
   {
       protected void Application_Start(object sender, EventArgs e)
       {
           Bootstrapper.Bootstrapped += Bootstrapper_Bootstrapped;
       }

       private void Bootstrapper_Bootstrapped(object sender, EventArgs e)
       {
           EventHub.Subscribe<RoleUnassigned>(evt => RoleUnassignedEventHandler(evt));
       }

       public void RoleUnassignedEventHandler(RoleUnassigned eventInfo)
       {
           // your logic
       }
   }
}
```
