Re: ログイン画面のURLを変更する方法

2014年12月10日 at 21:01

動くのかもしれないですけど、ちょっと…違う方法を考えてみます。

Re: ログイン画面のURLを変更する方法

2014年12月10日 at 21:09
hissyさん

有り難うございます。
サーバ側の設定(RewriteRuleなど)で対処する方法などでも構いませんので、
良い(よりスタンダードな)方法があれば、展開頂けると幸いです。
 

Re: ログイン画面のURLを変更する方法

2014年12月10日 at 21:28
あ、入れ違いで投稿してしまいました。元の投稿は、DBを直接書き換えていると言うことと、もし問題があった時に戻しにくいというのがちょっとなと思いました。下記の方法であれば、すぐに戻すことができます。
 

Re: ログイン画面のURLを変更する方法

2014年12月10日 at 21:26
1. /custom_login の作成

/concrete/core/controllers/login.php を
/controllers/custom_login.php にコピー

class Concrete5_Controller_Login を
class CustomLoginController に変更

コード内の /login を /custom_login に変更

/concrete/single_pages/login.php を
/single_pages/custom_login.php にコピー

こちらは内容変更無しでいけると思います

2. シングルページの追加

管理画面のシングルページのページから、custom_loginを追加してください。

3. /custom_login のテーマを変更

/config/site_theme_paths.php を開く
このファイルがシングルページのテーマ変更用のファイルです。オーバーライドできるのですが、ファイル名が違うので注意なのです

下記を追記してください

$v = View::getInstance();
$v->setThemeByPath('/custom_login', VIEW_CORE_THEME);

4. /login の無効化(オーバーライド)

/controllers/login.php を作成

中身をコレにしてください。アクセスするとトップページにリダイレクトします

<?php
defined('C5_EXECUTE') or die("Access Denied.");

class LoginController extends Controller {
public function view(){
$this->redirect('/');
}
public function logout() {
$this->redirect('/custom_login/logout');
}
}


で、自分はどうしてるかという話ですが、ログインURLを隠すことが必要な案件の場合は、 LoginController をオーバーライドして処理を加えて、特定のハッシュがURLパラメーターに付加されていないとトップページにリダイレクト、にしています。ハッシュはconfig/site.phpに保存しておくと、運用中にログインURLを定期的に変えることも可能です。
 

Re: ログイン画面のURLを変更する方法

2014年12月10日 at 21:58
hissyさん

有り難う御座いました!
ほぼ教えて頂いた通りで、無事に変更出来ました。

/concrete/single_pages/login.php を
/single_pages/custom_login.php にコピー

こちらは内容変更無しでいけると思います


ここだけ、phpスクリプト内にpathがコーディングされていたので、
その部分を/custom_login
に変更する必要がありました。

それ以外は、教えて頂いた通りの修正で大丈夫でした。