Re: ログイン後、ユーザーIDごとの特定のページへの移動の方法

2011年12月2日 at 8:45

具体的に、どういう動作が希望なのでしょうか?

controllers/login.php の LoginController::finishLogin() にログイン後の挙動が書かれています。オーバーライドすれば管理画面の挙動とは無関係にユーザーIDごとに特定のページにリダイレクトする処理に変更することもできそうですが。

あるいは、カスタム設定でリダイレクトした先をシングルページにして、そこからさらにリダイレクトさせるか。concrete5のお作法的にはどっちがいいのかな。

Re: Re: ログイン後、ユーザーIDごとの特定のページへの移動の方法

2011年12月2日 at 15:33
hissyさん。返信有難うございます!

そうですねぇ~「concrete5」のお作法的には・・・
hissyさんの返信ですと・・・確かに悩めますねぇ~

簡単なのが、オーバーライドでしょうか?

シングルページのリダイレクト方式なら、パッケージング化が出来そうです。
(※会員専用ページあたりが作れそうですね。)

そういうアドオンを作る・・・だけど(ユーザーIDと特定のログイン後ページ移動)の肝心なところがわかりません。


それ以外に考えていたのが・・・

1、ユーザーに追加属性にて、対応
①、王道的には、「ダッシュボード」⇒「ユーザーグループ管理」⇒「ユーザー項目」
「属性項目」の新規追加で、上記の項目(ユーザーIDと特定のログイン後ページ移動)として設定出来るのが、本来のような気がします。

②、だけど、追加属性にそういったプログラムの書込み方がわからないです。
※ここをもっと活用出来れば、色々な利用方法があると思うのですが・・・


2、ページ属性で対応?
①、「ダッシュボード」⇒「サイトマップ」⇒「全サイトマップ」でサイトマップを表示させて、対象のページを選択⇒「ページ設定」⇒「所有者」があるので、ここに
上記の項目(ユーザーIDと特定のログイン後ページ移動)を反映させる方法

②、または、同じところで、カスタム属性で、1-②で作ったようなもので、反映させるという手もありそうです。

③、どう記述したらいいのかがわからないです。


3、login.php で対応(hissyさん案)
①、yourtheme/login.php で作ってあげて,ダイレクトにページパスを書いてあげる。
 (要:config/site_theme_paths.php の記述)
②、今回の発想元ネタは、実はココから来ています。
③、「ログインID」と連動して(ユーザーIDと特定のログイン後ページ移動)を実現させるのがわからないのが、本来の質問だったかもしれません。
④、「ログインID」ごとに違うページを設定したいと考えていたので、特定のひとつだけのページだけだとOKですが、IDとページごとでは、今回のは実現しにくいです。
④、実際にはどのような記述がいいのかがわかりません。

いままでのバージョンには、ダッシュボード側とページ側と2つあるので、今度の新バージョン5.5には、ちょっとクリック操作数とページ数が増えるという感覚でしょうか?


4、アドオン「Config Variables」と連動させる。
①、機能に「ユーザーID」ごとに「User Config setting」が追加出来るのですが、どうやって?利用するのかが、わからないです。

②、コレを無理無理利用するなら・・・「ユーザー項目の追加」で対応出来そうな感じなのですけど。

しかしながら、色々な方法が考えられますね!
 

Re: Re: Re: ログイン後、ユーザーIDごとの特定のページへの移動の方法

2011年12月2日 at 16:04
> 1、ユーザーに追加属性にて、対応
おお、ナイスアイディア。テキストで追加属性を作り、そこにページIDを書くのがよさそうな気がします。空だったらトップページに飛べばいいわけだし。


ログイン後に特定のページにリダイレクトする処理ですが、コアに書いてあります。

デフォルトのログインフォームのソースを見ると
<input type="hidden" name="rcID" value="" />
という行がありますが、このvalueにページIDを入れると、ログイン後そのページにリダイレクトします。

この部分の処理も controllers/login.php に書いてあるので、参考になると思います。
 

Re: Re: Re: Re: ログイン後、ユーザーIDごとの特定のページへの移動の方法

2011年12月2日 at 22:56
コアを参照に色々試してみたのですけど・・・
巧く動いてくれません。
ふむ~です。

下記コードは、直接 yourthemes/login.php で書き込んだもの。
確かに「cID」をダイレクトに入れると、そのページに行くのだが・・・
ユーザー項目からは、来ない感じです。


<input type="hidden" name="rcID" value="<?php $u = new User(); if($u->isLoggedIn()) { $ui = UserInfo::getByID($u->getUserID()); echo $ui->getAttribute('Your-User-Attribute'); } ?>" />


ボタンでは反応しないですねぇ。(submit)

ひとつページをはさんで、そこから行ける様に考えるしかないのかな?
 

Re: Re: Re: Re: Re: ログイン後、ユーザーIDごとの特定のページへの移動の方法

2011年12月3日 at 10:32
このアドオンで目的達成できるような気がします。(まだ試してないですが)

http://www.concrete5.org/marketplace/addons/login-attribute-redirect/
use concrete5's user manager to assign a login location to all users by using groups or search terms.
redirect users anywhere, a local page - or even a 3rd party URL.
set it up to redirect the user JUST the next time they login, or EVERY time they login
works well with existing redirection options in concrete5 core, resetting to the default behavior after a single redirect if desired.
Redirect users on login based on their groups
 

Re: Re: Re: Re: Re: Re: ログイン後、ユーザーIDごとの特定のページへの移動の方法

2011年12月4日 at 12:39
ounziwさん返信有難うです。

「Login-attribute-redirect」の存在は後から知りました。
元々早い段階から存在していたのに、ここのページを見ても写真や、サンプルがないから、何に?利用するのか解らなかったです。
でも、お試しするには、料金的にはなんとも不親切ですね。
今回のケースで、巧く機能してくだされば良いのですけど、目的に沿っていなければ冒険する事になるので、今回は見送っています。

機能的には・・ログイン後をどうするか?アドオンっていう感じでしょうか?
①、登録ユーザーのその後をどうする・・・云々
②、グループユーザーもOKですよ・・・云々機能
③、ダッシュボードのシングルページ管理で、追加されるアドオンで、それぞれに細かく設定されるようなアドオンなら・・・「あり!」なアドオンでしょう!
 

Re: Re: Re: Re: Re: ログイン後、ユーザーIDごとの特定のページへの移動の方法

2011年12月4日 at 12:07
<input type="hidden" name="rcID" value="<?php $u = new User(); if($u->isLoggedIn()) { $ui = UserInfo::getByID($u->getUserID()); echo $ui->getAttribute('Your-User-Attribute'); } ?>" />


これは、ログインしていない状態では取得できないと思います。ログイン後に1ページ挟むしか無いですねぇ。
 

Re: Re: Re: Re: Re: Re: ログイン後、ユーザーIDごとの特定のページへの移動の方法

2011年12月4日 at 12:58
ログイン後は、それでもしかたないのかなぁ~


サンプル実験では・・・

①、yourthemes/login.php
 を作ってあげて、そこの「ログインボタン」にダイレクトに記述する方法。

②、適当なアドオンの「開発用シングルページ」内での、開発する方法。
 なんでもいいので、適当なダッシュボード側シングルページ付アドオンにシングルページを1枚登録しておいて、そのアドオンをインストールした後に、
 その「ダッシュボード内・開発用シングルページ」を設置し、そこで、ユーザーinfo関連の記述をたくさんサンプルを作って、テストしながらの、開発方法をしています。

 ⇒ここまでなら、ユーザー属性項目で、追加されたものを、表示させる事まで
 は、割と簡単に出来ちゃったりします。

 ⇒concrete5は、面白いなぁ~と、考えさせられる事請け合いですw
 編集自体は、サイト側シングルページ(ページタイプ)ではないのでそのダッシュボード内、編集は出来ませんが、記述次第では、ダッシュボード内側で作った様々なデーター情報なんかを引っ張って来たりする事が、出来ちゃったりします。
 「スクラップブック」から持ってこれるので、コレだけでも色々なアイデアが実現しそうな予感があります。
 最も折角のダッシュボード内シングルページの利用ですから、編集が自由に出来るのが良いのは、言うまでもありませんけど・・・
 v5.5を睨んだ、開発ですね!