【まとめ】 Ver5.7のログイン画面のURLを変更する方法

2016年10月26日 at 10:59

ちょっとまとめを書きますね。

ログイン 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を変更する方法

2016年10月26日 at 11:38
理解しているつもりです。
データを送ったほうがいいでしょうか?

何度も申し訳ないです。