concrete5 のユーザーIDの仕様(長さ、使える文字)を調べてみました。調べてみたバージョンは5.7.4.2です。

長さ

短い文字数を入れた場合、長い文字数を入れた場合を試してみたところ、3文字から64文字までが許可されました。

なお、concrete5の初期設定では3から64ですが、設定で変更することができます。

* 長い場合のエラーメッセージはバグと思われますので、githubでpull requestしてあります。

*追記* エラーメッセージの修正が開発ブランチにマージされました。

使える文字

記号を入れた場合、A username may only contain letters or numbers. というエラーメッセージが出ます。なので、アルファベットと数字しか認めないように思われます。

しかし、src\Application\Service\Validation.php の username メソッドを見ると、

$rxBoundary = '[A-Za-z0-9]';
if (Config::get('concrete.user.username.allow_spaces')) {
  $rxMiddle = '[A-Za-z0-9_. ]';
} else {
  $rxMiddle = '[A-Za-z0-9_.]';
}

となっており、アンダースコアとピリオドは許可されるようです。また設定により空白記号も許可されるようです。

さらに、

if (strlen($username) < 3) {
  if (!preg_match('/^' . $rxBoundary . '+$/', $username)) {
    return false;
  }
} else {
  if (!preg_match('/^' . $rxBoundary . $rxMiddle . '+' . $rxBoundary . '$/', $username)) {
    return false;
  }
}

と続くので、「アンダースコアとピリオドと空白記号は途中はOKだが、先頭と末尾は不可」です。

users.png

実際、アンダースコアを含むユーザー名、ピリオドを含むユーザー名は登録できました。

*追記* concrete5 に報告したところ、concrete5 の開発ブランチにマージされました。アンダースコアを含むユーザー名、ピリオドを含むユーザー名は許可される、という仕様で、メッセージが適切でなかったようです。

記事公開日: 2015年06月09日
#

「訪問者からの問い合わせを受ける」といった、シンプルな機... 詳細はこちら

#

レスキューワーク株式会社の運営する見積書作成サービス「マ... 詳細はこちら

ホームページ作成・運用ソフト concrete5 は、追加機能として... 詳細はこちら