Сайты Silverstripe с независимой регистрацией пользователей - PullRequest
1 голос
/ 22 сентября 2011

Я использую модуль subsites для создания многосайтовой системы.

Я бы хотел, чтобы логины пользователей на сайты были независимыми.Поэтому, если пользователь зарегистрировался на одном сайте, он не может просто перейти на другой дочерний сайт и войти в систему - он должен также зарегистрироваться на этом сайте.

Другими словами - регистрация на каждом дочернем сайте полностью независима.1005 *

Возможно ли это?

Ответы [ 3 ]

2 голосов
/ 21 августа 2012

Технически было бы возможно написать DataObjectDecorator для класса Member и добавить SubsiteID к каждому члену, а затем добавить фильтр для этого SubsiteID с аргументомSQL ().
И вам нужно изменить форму регистра длярассмотрите SubsiteID и подключитесь к аутентификатору.
Но вполне может быть, что есть пара других моментов, которые вам нужно подключить, чтобы заставить это работать.

Так что да, это должно быть возможно,но это займет длинное время, и заднице будет трудно заставить его работать должным образом.

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

1 голос
/ 09 августа 2016

Я знаю, что это довольно старая ветка, но если кто-то наткнется на эту ветку, это будет полезно.Для этого есть еще один хак.

/mysite/extensions/CustomLeftAndMain.php

<?php
class CustomLeftAndMain extends Extension {

    public function onAfterInit() {

        self::handleUser();

    }



    public static function handleUser(){
        $currentSubsiteID = Subsite::currentSubsiteID();

        $member =  Member::currentUser();
        $memberBelongsToSubsite =  $member->SubsiteID; 

        if($memberBelongsToSubsite>0 && $currentSubsiteID!=$memberBelongsToSubsite){
            Security::logout(false);
            Controller::curr()->redirect("/Security/login/?_c=1001");
        }
    }


}

и в /mysite/_config.php добавьте расширение

LeftAndMain::add_extension('CustomLeftAndMain');

Что вышеКод в основном делает это, система позволяет пользователю войти в систему независимо от того, к какому дочернему сайту он принадлежит.И пока приложение инициируется, принадлежит ли зарегистрированный пользователь текущему веб-сайту или нет (метод handleUser делает это).Если пользователь не принадлежит к текущему сайту, он выходит из системы и перенаправляется на страницу входа.

0 голосов
/ 22 сентября 2011

В описании сказано (между прочим):

  • "Модуль дочерних сайтов позволяет запускать несколько веб-сайтов из одной установки SilverStripe и обмениваться между собой пользователями, контентом и ресурсами."
  • "В ветвях могут быть отдельные пользователи / администраторы и индивидуальная информация."

Если у вас нет общей «штаб-квартиры», я не уверен, что модуль подходит именно вам. Вместо того, чтобы взломать модуль, чтобы сделать что-то, для чего он не предназначен, почему бы не сделать отдельные установки?

...