2016-05-10 7 views
2

認証されたユーザーの既定のURLを変更する必要があります。例えば、ルートサイトの要求する応答:認証されたユーザーのPloneの既定のURLを変更する

  1. [サイトルート]/wellcome01(Ploneの設定インターフェースにより設定されたデフォルトのURL)、匿名ユーザの
  2. [サイトルート]/wellcome02(認証されたユーザ

のためにいくつかのリソース)によって設定されたので、このリソースを実施するための最良の解決策は何ですか?

答えて

3

あなたは、あなたが次のコードで、あなたのPloneルートでindex_htmlのPythonスクリプトを追加することができますいくつかのオプション

1.

を得ました。

if context.portal_membership.isAnonymousUser(): 
    return context.REQUEST.RESPONSE.redirect('welcome01') 
else: 
    return context.REQUEST.RESPONSE.redirect('welcome02') 

2.

あなたはこれをregsiterもデは

from Products.Five.browser import BrowserView 
from plone import api 


class RootRedirector(BrowserView): 

    def __call__(self): 

     if api.user.is_anonymous() 
      return self.request.RESPONSE.redirect('welcome01') 
     else: 
      return self.request.RESPONSE.redirect('welcome02') 

をリダイレクト私は個人的に自分のサイト上でコードをバージョニングされていない好きではないので、私はあなたが扱うたBrowserViewを書くためにアドバイスSiteRoot(Products.CMFPlone.interfaces.siteroot.IPloneSiteRoot)のみを表示

+0

時間の不足のため、私たちは解決策1に従っていました。例をありがとう。 – gwarah

3

ログインイベントに反応する場合は、次のように変更してoをリダイレクトしますnは史上初の唯一のログイン(そしておそらく代わりにIUserLoggedInEventをしたい):

のconfigure.zcml:

<subscriber for="Products.PlonePAS.events.IUserInitialLoginInEvent" 
      handler=".hellonewbie.showIntroPage" /> 

hellonewbie.py:

# -*- coding: utf-8 -*- 
from zope.app.component.hooks import getSite 

USER_ROLE  = 'Member' 
INTRO_PAGE_ID = 'new-user-info' 

def showIntroPage(event): 
    """Login event handler: first login. 

    For proper users (i.e. Member role) that have 
    never logged in before, redirect them to a page 
    that tells them about the system. 
    """ 

    user = event.object 

    if user.has_role(USER_ROLE): 
     # yup, redirect the guy, he/she's new. 

     portal = getSite() 
     request = getattr(portal, "REQUEST", None) 
     if request: 
      infopage = portal.restrictedTraverse(INTRO_PAGE_ID, None) 
      if infopage: 
       request.response.redirect(infopage.absolute_url()) 
+0

このソリューションは選択しませんが、他のコードケースでは役立ちます。コードをありがとう。 – gwarah

3

それとも、ちょうど2つであるビューを使用しますログインされていない場合にのみ表示される要素と、ログインした場合にのみ、TAL条件を介して表示される要素です。

関連する問題