How to Programmatically Add/Assign a User to a User Group in SharePoint

This article shows how to add a user in a SharePoint 2010 site programmatically. Here we have a Group already defined in that site, we select the user name from a dropdown selection to add a user to the selected group. This shows the details of a generic function in which you pass the group name and user name, then the function will add the user into the group.
 
 

<div class="announcements_detail">

    <h2>

        Add User To Group</h2>

    <div class="rows firstRow">

        <div class="col1">

            User Name:</div>

        <div class="col2 title">

            <div class="inner_col2">

                <div class="user_detail">

                    <SharePoint:PeopleEditor ID="PplEdtor" runat="server" AllowEmpty="true" 
                        MultiSelect="false"

                        SelectionSet="User" ValidatorEnabled="true" />

                </div>

            </div>

        </div>

        <div class="clr">

        </div>

    </div>

    <div class="rows">

        <div class="col1">

            Groups:</div>

        <div class="col2">

            <div class="inner_col2">

                <asp:DropDownList ID="ddlGroups" runat="server">

                </asp:DropDownList>

                <asp:RequiredFieldValidator ID="reqGroups" runat="server" 
                    ErrorMessage="Please select Group" ControlToValidate=
                    "ddlGroups"
 InitialValue=""></asp:RequiredFieldValidator>

            </div>

        </div>

        <div class="clr">

        </div>

    </div>

    

    <div class="rows noBorder">

        <div class="col1">

        </div>

        <div class="col2 noBg">

            <div class="inner_col2">

                <asp:Button ID="bntAddUserToGrp" runat="server" Text="Add User" 
                    class="green_gradient_bg"

                    OnClick="btnAddUserToGrp_Click"></asp:Button></div>

        </div>

        <div class="clr">

        </div>

    </div>

    <div>

        <input class="close_btn" id="btnClose" onclick="javascript:window.close();" 
          type="button" />

    </div>

</div>

The following is the code to show how to add a user to a SharePoint group.

protected void Page_Load(object sender, EventArgs e)
{

   try

   {

      if
(!Page.IsPostBack)
      {
         BindGroupsWithDropDownList();
      }
   }

   catch
(Exception ex)
   {
      ShowError(
"Page_Load: " + ex.Message);
      return
;
   }
}

private
void BindGroupsWithDropDownList()
{

   try

   {
      ddlGroups.Items.Clear();

      string
[] strGroupArr = { "ParticipantGroupName", "MentorGroupName", "SponsorGroupName", "BusinessGroupName" };
      foreach
(string strGroupType in strGroupArr)
      {
         ddlGroups.Items.Add(strGroupType);
      }
   }

   catch
(Exception ex)
   {
      ShowError(
"BindGroupData: " + ex.Message);
   }
}

protected
void btnAddUserToGrp_Click(object sender, EventArgs e)
   {

      bool
Flag = false;
      string
strMsg = string.Empty;
      try

      {

         if
(PplEdtor.IsValid)
         {

            string
strUsers = GetMembersFromPeoplePicker(PplEdtor);
            string
strParticipant = SPContext.Current.Web.AllUsers[strUsers].ID + ";#" + strUsers;
            string
strGroupName = ddlGroups.SelectedItem.ToString().Trim();
            string
strGrouptyp = ddlGroups.SelectedValue.ToString().Trim();

            if (!string.IsNullOrEmpty(strUsers) && !string.IsNullOrEmpty(strGroupName) && !string.IsNullOrEmpty(strGrouptyp))
            {

               string
strSiteUrl = SPContext.Current.Web.Url;
               SPSecurity
.RunWithElevatedPrivileges(delegate()
               {

                  using
(SPSite oAdminSite = new SPSite(strSiteUrl))
                  {

                     using
(SPWeb oAdminWeb = oAdminSite.OpenWeb())
                     {

                     if
(AddUserToGroup(oAdminWeb, strUsers, strGroupName))
                     {
                        Flag =
true;
                     }

                     else

                     {
                        strMsg =
"User NOT added to group";
                     }
                  }
               }
            });
            strMsg =
"User added to group successfully";
         }

         else

         {
            strMsg =
"Parameters Missing, to add a user!!!";
         }
      }

      else

      {
         strMsg =
"Please enter valid User Name";
      }

      ScriptManager
.RegisterStartupScript(this, this.GetType(), "starScript", "showMessage('" + strMsg + "');", true);
   }

   catch
(Exception ex)
   {
      ShowError(
"btnAddUserToGrp_Click: " + ex.Message);
      return
;
   }
}

public
bool AddUserToGroup(SPWeb oWeb, string strUserNameToAdd, string strGroupName)
{

   try

   {

      bool
Flag = false;
      oWeb.AllowUnsafeUpdates =
true;
      SPUser
spUser = oWeb.EnsureUser(strUserNameToAdd);
      if
(spUser != null)
      {

         SPGroup
spGroup = oWeb.Groups[strGroupName];
         if
(spGroup != null)
            spGroup.AddUser(spUser);
      }
      oWeb.Update();
      Flag =
true;
      oWeb.AllowUnsafeUpdates =
false;
      return
Flag;
   }

   catch
(Exception ex)
   {
      oWeb.AllowUnsafeUpdates =
false;
      return
false;
   }
}

private
string GetMembersFromPeoplePicker(PeopleEditor oPeopleEditor)
{

   try

   {

      string
strLoginNames = string.Empty;
      foreach
(PickerEntity oUser in oPeopleEditor.Entities)
      {

      if
(oUser.IsResolved)
         strLoginNames += (
string.IsNullOrEmpty(strLoginNames)) ? oUser.Key : ";" + oUser.Key;
      }

      return
strLoginNames;
   }

   catch
(Exception ex)
   {
      ShowError(
"GetMembersFromPeoplePicker: " + ex.Message);
      return
string.Empty;
   }
}

private
void ShowError(string strMsg)
{
   Response.Write(
"<br />" + strMsg);
}