【まとめ】 Ver5.7のログイン画面のURLを変更する方法
ちょっとまとめを書きますね。
ログイン URL を完全に変えたい場合の方法です。
# 案1: ログイン画面は別ページにして処理部分は /login のままにする
## STEP 1: ファイルをコピー
/concrete/controllers/single_page/login.php
/concrete/single_pages/login.php
を
/application/controllers/single_page/[希望する移行先ディレクトリ & ファイル名]
/application/single_pages/[希望する移行先ディレクトリ & ファイル名]
にコピー。
※ ここで注意したいのは controllers の single_page は単数で、2行目は複数形の single_pages
## STEP 2: コピーした application/controllers/single_page/ の方の PHP の namespace を変更
/application/controllers/single_page/[希望する移行先ディレクトリ & ファイル名]
の方の1行目の namespace の宣言を移行した先の物に変えます。
namespace Concrete/Controller/SinglePage
から
namespace Application/Controller/SinglePage\[ディレクトリを増やすなら]
に。
## STEP 3: 管理画面 - ページとテーマ - シングルページで任意 URL を追加
管理画面 - ページとテーマ - シングルページで任意 URL を追加します。
これでカスタムなログインページが完成します。
# 案2: 完全にURL を書き換える方法
ログインの処理を /login 以外で行いたい場合の方法です。
/login の処理部分も違う URL で行います。
## 動画での説明
動画を使った説明はこちらです
http://youtu.be/60qftRgyhDg?t=1h5m35s
## STEP 1: ファイルをコピー
/concrete/controllers/single_page/login.php
/concrete/single_pages/login.php
を
/application/controllers/single_page/[希望する移行先ディレクトリ & ファイル名]
/application/single_pages/[希望する移行先ディレクトリ & ファイル名]
にコピー。
※ ここで注意したいのは controllers の single_page は単数で、2行目は複数形の single_pages
## STEP 2: コピーした application/controllers/single_page/ の方の PHP の namespace を変更
/application/controllers/single_page/[希望する移行先ディレクトリ & ファイル名]
の方の1行目の namespace の宣言を移行した先の物に変えます。
namespace Concrete/Controller/SinglePage
から
namespace Application/Controller/SinglePage\[ディレクトリを増やすなら]
に。
## STEP 3: 認証部分のファイルをコピー
そして、認証部分の変更も行います。
最低限
/concrete/authentication/concrete/controller.php
/concrete/authentication/concrete/form.php
を
/application/authentication/concrete/controller.php
/application/authentication/concrete/form.php
にコピー。
## STEP 4: /application/authentication/concrete/controller.php の中身のURLを新しいログイン先に変更
/application/authentication/concrete/controller.php
をテキストエディタで開いきます。
2行目を
namespace Concrete\Authentication\Concrete;
を
namespace Application\Authentication\Concrete;
に変更。
171行目
'/login',
を
'/xxx', (新しいログイン URL)
203行目
$this->redirect('/login', $this->getAuthenticationType()->getAuthenticationTypeHandle(), 'password_sent');
を
$this->redirect('/xxx', $this->getAuthenticationType()->getAuthenticationTypeHandle(), 'password_sent');
に変更
331行目
$this->redirect('/login/callback/concrete', 'email_validated');
を
$this->redirect('/xxx/callback/concrete', 'email_validated');
に
334行目
$this->redirect('/login/callback/concrete', 'invalid_token');
を
$this->redirect('/xxx/callback/concrete', 'invalid_token');
など・・・。
## STEP 5: /application/authentication/concrete/form.php の中身のURLを新しいログイン先に変更
同じく、
/application/authentication/concrete/form.php
の中を見て「/login」な記述があるところを新しい URL に変更してください。
## STEP 6: [オプション] パスワード変更などの場所も変更する場合
他にもパスワード変更ページなども移設したい場合は
/concrete/authentication/concrete
内にある他のファイルをすべて
/application/authentication/concrete
配下にコピーして、/login の書いてある場所を書き換えてください。
## STEP 7: 管理画面 - ページとテーマ - シングルページで任意 URL を追加
管理画面 - ページとテーマ - シングルページで任意 URL を追加します。
これでカスタムなログインページが完成します。
# [オプション] 元のログインページを削除
元のログインページを削除する場合は最新の注意を払ってください。
方法としては以下の2案があります。
案1の方が、なにか問題があった時に、
/concrete/single_pages/login.php
をもとに戻すことにより復旧が早くなります。
## ログインページの表示だけを白紙にする
- /concrete/single_pages/login.php を /application/single_pages/login.php にコピー
- HTML を書き換えて、単純に真っ白になるよう
※ パスワード変更ページなどは使いたいと行った場合は、login.php ページを削除するとことをほどよく変更する必要があります。
## 案2の場合
この方法は「案1: ログイン画面は別ページにして処理部分は /login のままにする」で行うと、二度とログインできなくなるので、気をつけてください。
- フルサイトマップから「システムページを表示」をクリックし、ログインページ探す
- ログインページを削除
この方法を行うときは、上記、案2が正常にログインできることを確認してから行ったください。
以上。
モモ
Re: 【まとめ】 Ver5.7のログイン画面のURLを変更する方法
データを送ったほうがいいでしょうか?
何度も申し訳ないです。