Tuesday 9 November 2010

Programmatically create and delete a domain

This is pretty easy and well documented, but I thought I would add it in anyway as I have added the user and role code. This will give you a full picture. You can add a domain that is administered locally. This means that you can have users that belong to a specific domain and can view and edit users in that domain only. This is particularly useful when you are dealing with lots of microsites.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Sitecore.Configuration;
using Sitecore.Security.Domains;

namespace Client.Project.Security
{
    /// <summary>
    /// This class will be responsible for:
    /// 1. Adding new domains
    /// 3. Deleting domains
    /// </summary>
    public class DomainMaintenance
    {
        public void AddDomain(string domain)
        {
            try
            {
                if (Sitecore.SecurityModel.DomainManager.GetDomain(domain) == null)
                {
                    Sitecore.Context.User.RuntimeSettings.IsAdministrator = true;
                    Sitecore.SecurityModel.DomainManager.AddDomain(domain, true);
                    Sitecore.Context.User.RuntimeSettings.IsAdministrator = false;
                }
            }
            catch (Exception ex)
            {
                Sitecore.Diagnostics.Log.Error(string.Format("Error in Client.Project.Security.DomainMaintenance (AddDomain): Message: {0}; Source:{1}", ex.Message, ex.Source), this);
            }
        }
        public void DeleteDomain(string domain)
        {
            try
            {
                if (Sitecore.SecurityModel.DomainManager.GetDomain(domain) != null)
                {
                    Sitecore.Context.User.RuntimeSettings.IsAdministrator = true;
                    Sitecore.SecurityModel.DomainManager.RemoveDomain(domain);
                    Sitecore.Context.User.RuntimeSettings.IsAdministrator = false;
                }
            }
            catch (Exception ex)
            {
                Sitecore.Diagnostics.Log.Error(string.Format("Error in Client.Project.Security.DomainMaintenance (DeleteDomain): Message: {0}; Source:{1}", ex.Message, ex.Source), this);
            }
        }
    }
}

No comments:

Post a Comment