Администраторы экстрасети Sitecore?

Привет, я разрабатываю приложение с несколькими сайтами, и у каждого сайта есть собственная экстрасеть, и все это прекрасно работает с использованием Sitecore 6.4.

Теперь мне нужно, чтобы редакторы (не администраторы) каждого сайта могли создавать пользователей экстрасети, которые могут получить доступ только к экстрасети, подключенной к сайту, возможно ли это вообще?

В основном я ищу такую ​​​​структуру:

Sitecore\Editor (администратор локальной экстрасети)

Экстранет\пользователь


person Kenneth Jakobsen    schedule 30.03.2011    source источник
comment
Что вы имеете в виду, когда говорите, что у каждого есть свой экстранет? Как на сайте экстранета или просто наборе пользователей экстранета?   -  person Mark Ursino    schedule 30.03.2011
comment
У них есть собственный сайт в экстранете   -  person Kenneth Jakobsen    schedule 31.03.2011


Ответы (1)


Я думаю, вы могли бы создать роль экстрасети для каждого из вас, «экстранетов», например. Сайт1Админ.

А затем создайте страницу, которая позволит им создать пользователя, предоставив этому пользователю основные роли, которые ему нужны.

Это код для Sitecore 6.0, хотя он должен быть таким же для 6.4, если честно:

Sitecore.Security.Accounts.User user;
if (!Sitecore.Context.IsLoggedIn)
{
    string domainUser = Sitecore.Context.Domain.GetFullName("youruser");
    string txtPassword = "yourpass";
    string txtEmail = "youremail";

    if (Sitecore.Security.Accounts.User.Exists(domainUser))
        return;

    MembershipCreateStatus status;
    Membership.CreateUser(domainUser, txtPassword, txtEmail, "Never?", "Always!", true, out status);

    if (!status.Equals(MembershipCreateStatus.Success))
    {
        throw new MembershipCreateUserException(status.ToString());
    }       
    user = //something to load the user, probably in Sitecore.Security.Accounts.User
}
    var role = "extranet\\Site1User";   

    var roles = Roles.GetRolesForUser(); //this is probably only for the current context user
    if (!roles.Contains(role))
    {
        try
        {
            Roles.AddUsersToRole(new string[] { "youruser" }, role);
        }
        catch(System.Configuration.Provider.ProviderException)
        {
            // do nothing, just move on
        }

    }
}

Это довольно просто, основано на некотором коде, который я пытался собрать из некоторого рабочего кода, который создал пользователя и вошел в него, и его следует настроить на то, что вы делаете, поскольку, вероятно, есть некоторые ошибки.

person Holger    schedule 30.03.2011
comment
Я как бы надеялся избежать этого и, возможно, думал, что это можно сделать с помощью std. функциональность, но я попробую. - person Kenneth Jakobsen; 31.03.2011
comment
Я думаю только о пользователях Sitecore с проверкой администратора или с ролью управления учетной записью клиента Sitecore\Sitecore. Я бы предположил, что для пользователя экстрасети вам нужно будет создать некоторый собственный код, который позволит пользователям экстрасети создавать других пользователей. Или вы можете попробовать задать вопрос Sitecore на support.sitecore.net/helpdesk/Default.aspx - person Holger; 31.03.2011