Helper
in package
Table of Contents
Methods
- addExtraLoggedInCookie() : void
- ログインしている場合、権限のCookieを追加
- addUserFromOauth() : int
- 新しいユーザーをOAuth認証から作成
- canAccessAdminLoginFromCurrentIp() : bool
- 管理者ログイン用: 現在のIPアドレスからアクセス可能か判断
- canAccessSigninFromCurrentIp() : bool
- 一般サインイン用: 現在のIPアドレスからアクセス可能か判断
- canLoginPage() : bool
- 認証前のログインページを表示できるかどうかを判定
- canMemberSignin() : bool
- 会員サインインが可能かどうかを判定
- checkAllowedDevice() : bool
- ログイン許可端末のチェック
- createTimedLinkParams() : string
- createUser() : int
- findUser() : int
- 登録ユーザーを検索
- getAdminLoginAuth() : array<string|int, string>
- 管理ログインできる権限を取得
- getLogoutRedirectUrl() : string
- ログアウト時のリダイレクト先URLを取得
- getSinginAuth() : array<string|int, string>
- 一般サインインできる権限を取得
- isAuthRequiredPage() : bool
- 現在のページが認証が必要なページかどうか判定
- isExactPath() : bool
- 指定されたパスがブログトップからのパスで余分なパスがないかどうかを判定
- isLoggedIn() : bool
- ログイン中かどうか判定
- isValidAuthenticatedPath() : bool
- ログイン済みユーザーのページ(マイページ・管理画面)で正しいパスかどうかを判定 deny_blog_loginはログインページの制御なので、ログイン済み操作には適用しない
- loginRedirect() : mixed
- ログインリダイレクト処理
- matchExactPath() : bool
- ブログコードとセグメントから生成したパスが、リクエストパスと一致するかを判定
- postLoginProcessing() : void
- ログイン判定後の処理
- redirectToAuthPage() : never
- ログイン・サインインページへリダイレクト
- removeExtraLoggedInCookie() : void
- ログインしていない時、追加されるCookieを削除
- resizeUserIcon() : string
- ユーザーアイコンのサイズを変更
- resolveAuthSystemRequest() : AuthSystemResolution
- 認証系URLの解決結果(テンプレート表示 or ログイン画面へのリダイレクト)を取得する
- resolveSecretRedirectTarget() : "login"|"signin"|null
- シークレットコンテンツ遮断のリダイレクト先を解決する(副作用なし・テスト対象)
- setConstantsAuthSystemPage() : void
- 認証系ページの定数をセット
- subscriberActivation() : bool
- ユーザーを有効化
- updateSessionClientInfo() : void
- ログインセッションに付随するクライアント情報を更新
- updateUser() : mixed
- userIconFromUri() : string
- 画像URIから画像を生成
- validateTimedLinkParams() : array<string|int, mixed>
- canAccessFromCurrentIp() : bool
- IPアドレスチェックの共通ロジック
- isMemberAuthPageFeatureAvailable() : bool
- 現在の会員向け認証系ページの機能が利用可能かどうかを判定
- isMemberAuthSystemPage() : bool
- 会員向けの認証系ページ(サインイン/登録/パスワードリセット/パスワードリセット認証/2FA復旧)かどうかを判定
- isSignupFeatureEnabled() : bool
- 読者登録(サインアップ)機能が有効かどうかを判定
- isTwoFactorAuthEnabled() : bool
- 二要素認証機能が有効かどうかを判定
- requiresAuthenticationForSecretContent() : bool
- シークレットコンテンツへのアクセスに認証が必要か判定
- shouldRedirectToSignin() : bool
- シークレットコンテンツ遮断時に、会員サインイン画面へ誘導すべきかを判定する
Methods
addExtraLoggedInCookie()
ログインしている場合、権限のCookieを追加
public
addExtraLoggedInCookie(int $uid) : void
Parameters
- $uid : int
addUserFromOauth()
新しいユーザーをOAuth認証から作成
public
addUserFromOauth(array<string|int, mixed> $data) : int
Parameters
- $data : array<string|int, mixed>
-
OAuth認証データ
Return values
intcanAccessAdminLoginFromCurrentIp()
管理者ログイン用: 現在のIPアドレスからアクセス可能か判断
public
canAccessAdminLoginFromCurrentIp() : bool
Return values
bool —true: アクセス可能, false: アクセス不可能
canAccessSigninFromCurrentIp()
一般サインイン用: 現在のIPアドレスからアクセス可能か判断
public
canAccessSigninFromCurrentIp() : bool
Return values
bool —true: アクセス可能, false: アクセス不可能
canLoginPage()
認証前のログインページを表示できるかどうかを判定
public
canLoginPage(int $bid, string $segment) : bool
deny_blog_login / fix_login_url による、認証ページの露出面を減らすためのアクセス制御。 false の場合に 404 を表示するのは仕様であり、正規URLへのリダイレクトで代替してはいけない。 リダイレクトすると隠している正規URLを教えることになり制限の意味がなくなるうえ、 deny_blog_login はURLの形ではなくブログの属性で拒否するため無限リダイレクトになる。 シークレット遮断(resolveSecretRedirectTarget())の「認証画面へ誘導」とは目的が逆で、 こちらは「認証ページが存在しないことにする」ための判定。
Parameters
- $bid : int
- $segment : string
Return values
boolcanMemberSignin()
会員サインインが可能かどうかを判定
public
canMemberSignin() : bool
Return values
boolcheckAllowedDevice()
ログイン許可端末のチェック
public
checkAllowedDevice(array<string|int, mixed> $user) : bool
Parameters
- $user : array<string|int, mixed>
Return values
boolcreateTimedLinkParams()
public
createTimedLinkParams(array<string|int, mixed> $context, int $lifetime) : string
Parameters
- $context : array<string|int, mixed>
- $lifetime : int
Return values
stringcreateUser()
public
createUser(Field_Validation $user, bool $subscribeLoginAnywhere) : int
Parameters
- $user : Field_Validation
- $subscribeLoginAnywhere : bool
Return values
int —$uid
findUser()
登録ユーザーを検索
public
findUser(string $email, mixed $bid) : int
Parameters
- $email : string
- $bid : mixed
Return values
intgetAdminLoginAuth()
管理ログインできる権限を取得
public
getAdminLoginAuth() : array<string|int, string>
Return values
array<string|int, string>getLogoutRedirectUrl()
ログアウト時のリダイレクト先URLを取得
public
getLogoutRedirectUrl(int $userId) : string
Parameters
- $userId : int
Return values
stringgetSinginAuth()
一般サインインできる権限を取得
public
getSinginAuth() : array<string|int, string>
Return values
array<string|int, string>isAuthRequiredPage()
現在のページが認証が必要なページかどうか判定
public
isAuthRequiredPage() : bool
Return values
boolisExactPath()
指定されたパスがブログトップからのパスで余分なパスがないかどうかを判定
public
isExactPath(int $bid, string $segment) : bool
Parameters
- $bid : int
- $segment : string
Return values
boolisLoggedIn()
ログイン中かどうか判定
public
isLoggedIn() : bool
Return values
boolisValidAuthenticatedPath()
ログイン済みユーザーのページ(マイページ・管理画面)で正しいパスかどうかを判定 deny_blog_loginはログインページの制御なので、ログイン済み操作には適用しない
public
isValidAuthenticatedPath(int $bid, string $segment) : bool
Parameters
- $bid : int
- $segment : string
Return values
boolloginRedirect()
ログインリダイレクト処理
public
loginRedirect(array<string|int, mixed> $user[, string|null $fieldRedirectUrl = null ]) : mixed
Parameters
- $user : array<string|int, mixed>
- $fieldRedirectUrl : string|null = null
matchExactPath()
ブログコードとセグメントから生成したパスが、リクエストパスと一致するかを判定
public
matchExactPath(string $blogCode, string $segment, string $requestPath) : bool
Parameters
- $blogCode : string
- $segment : string
- $requestPath : string
Return values
boolpostLoginProcessing()
ログイン判定後の処理
public
postLoginProcessing() : void
redirectToAuthPage()
ログイン・サインインページへリダイレクト
public
redirectToAuthPage(["login"|"signin" $type = 'login' ]) : never
Parameters
- $type : "login"|"signin" = 'login'
Return values
neverremoveExtraLoggedInCookie()
ログインしていない時、追加されるCookieを削除
public
removeExtraLoggedInCookie() : void
resizeUserIcon()
ユーザーアイコンのサイズを変更
public
resizeUserIcon(string $squarePath) : string
Parameters
- $squarePath : string
Return values
stringresolveAuthSystemRequest()
認証系URLの解決結果(テンプレート表示 or ログイン画面へのリダイレクト)を取得する
public
resolveAuthSystemRequest() : AuthSystemResolution
副作用を持たず、呼び出し側(main.php)が戻り値(AuthSystemResolution)に従って テンプレート表示またはリダイレクトを行う。シークレットブログ/カテゴリーの未認証アクセス遮断は 認証系画面の表示判定より先に行い、未ログイン時はログイン画面へ誘導する。
Return values
AuthSystemResolutionresolveSecretRedirectTarget()
シークレットコンテンツ遮断のリダイレクト先を解決する(副作用なし・テスト対象)
public
resolveSecretRedirectTarget(string|null $blogStatus, string|null $categoryStatus, bool $requiresAuthentication, bool $preferSignin, bool $isAuthRequiredPage, bool $canMemberSignin, bool $isMemberAuthSystemPage, bool $isMemberAuthPageFeatureAvailable, bool $canAccessSigninFromCurrentIp, bool $canAccessAdminLoginFromCurrentIp) : "login"|"signin"|null
グローバル定数・設定への依存はすべて呼び出し側(resolveAuthSystemRequest())で 解決して引数で受け取り、本メソッドは受け取った値だけで判定する。これにより private な shouldRedirectToSignin() を含む判定分岐を、この public メソッド経由で 網羅的にテストできる(グローバル状態をスタブせずに済む)。
Parameters
- $blogStatus : string|null
-
現在のブログステータス(ACMS_RAM::blogStatus(BID))
- $categoryStatus : string|null
-
現在のカテゴリーステータス(CID 未定義なら null)
- $requiresAuthentication : bool
-
未認証アクセスの遮断が必要か(requiresAuthenticationForSecretContent())
- $preferSignin : bool
-
ログイン画面のリダイレクト設定がサインイン(redirect_login_page === 'signin')
- $isAuthRequiredPage : bool
-
認証が必要なページ(管理画面・リビジョンプレビュー)
- $canMemberSignin : bool
-
会員サインイン機能が有効
- $isMemberAuthSystemPage : bool
-
会員向け認証系ページ(サインイン/登録/パスワードリセット/2FA復旧)か
- $isMemberAuthPageFeatureAvailable : bool
-
会員向け認証系ページの機能が利用可能か(isMemberAuthPageFeatureAvailable())
- $canAccessSigninFromCurrentIp : bool
-
現在のIPアドレスから会員サインインページへのアクセスが許可されているか (canAccessSigninFromCurrentIp())。誘導先が signin の場合に確認する。
- $canAccessAdminLoginFromCurrentIp : bool
-
現在のIPアドレスから管理者ログインページへのアクセスが 許可されているか(canAccessAdminLoginFromCurrentIp())。誘導先が login の場合に確認する。 signin_white_hosts と login_white_hosts は管理画面上も「一般サインイン制限」「管理ログイン制限」として 独立した設定のため、誘導先に対応する方の制限だけを確認する。許可されていない場合は一切リダイレクトしない。 リダイレクトすると隠しているはずの認証ページの正規URLを制限対象IPに開示してしまうため (canLoginPage() が同じ理由で 404 を維持しているのと同じ設計方針)
Return values
"login"|"signin"|null —'signin': 会員サインイン画面へ, 'login': 管理者ログイン画面へ, null: 遮断不要
setConstantsAuthSystemPage()
認証系ページの定数をセット
public
setConstantsAuthSystemPage(Field $queryParameter) : void
Parameters
- $queryParameter : Field
subscriberActivation()
ユーザーを有効化
public
subscriberActivation(int $uid) : bool
Parameters
- $uid : int
Return values
boolupdateSessionClientInfo()
ログインセッションに付随するクライアント情報を更新
public
updateSessionClientInfo(int $uid) : void
Parameters
- $uid : int
updateUser()
public
updateUser(int $uid, Field_Validation $user[, bool $subscribeLoginAnywhere = false ]) : mixed
Parameters
- $uid : int
- $user : Field_Validation
- $subscribeLoginAnywhere : bool = false
userIconFromUri()
画像URIから画像を生成
public
userIconFromUri(string $imageUri) : string
Parameters
- $imageUri : string
-
画像URL
Return values
string —画像パス
validateTimedLinkParams()
public
validateTimedLinkParams(string $key, string $salt, string $context) : array<string|int, mixed>
Parameters
- $key : string
- $salt : string
- $context : string
Tags
Return values
array<string|int, mixed>canAccessFromCurrentIp()
IPアドレスチェックの共通ロジック
private
canAccessFromCurrentIp(string $whiteListName, string $blackListName) : bool
Parameters
- $whiteListName : string
- $blackListName : string
Return values
boolisMemberAuthPageFeatureAvailable()
現在の会員向け認証系ページの機能が利用可能かどうかを判定
private
isMemberAuthPageFeatureAvailable() : bool
会員機能自体の有効性に加え、ページ固有の機能スイッチ (サインアップ: subscribe、2FA復旧: two_factor_auth)を確認する。 URL 制約(fix_login_url / deny_blog_login による canLoginPage())は含めない。 URL 制約違反は認証画面へ誘導せず 404 のままにする(正規URLの秘匿を維持し、 同一ページへのリダイレクトループを防ぐ)ため。
Return values
boolisMemberAuthSystemPage()
会員向けの認証系ページ(サインイン/登録/パスワードリセット/パスワードリセット認証/2FA復旧)かどうかを判定
private
isMemberAuthSystemPage() : bool
Return values
boolisSignupFeatureEnabled()
読者登録(サインアップ)機能が有効かどうかを判定
private
isSignupFeatureEnabled() : bool
isMemberAuthPageFeatureAvailable() と resolveAuthSystemRequest() の IS_SYSTEM_SIGNUP_PAGE 分岐の両方から参照する単一の判定源。
Return values
boolisTwoFactorAuthEnabled()
二要素認証機能が有効かどうかを判定
private
isTwoFactorAuthEnabled() : bool
isMemberAuthPageFeatureAvailable() と resolveAuthSystemRequest() の IS_SYSTEM_ADMIN_TFA_RECOVERY_PAGE / IS_SYSTEM_TFA_RECOVERY_PAGE 分岐の 両方から参照する単一の判定源。
Return values
boolrequiresAuthenticationForSecretContent()
シークレットコンテンツへのアクセスに認証が必要か判定
private
requiresAuthenticationForSecretContent(string $admin) : bool
シークレットブログ/カテゴリーにアクセスする際、 以下のいずれかに該当する場合は認証(ログイン/サインイン)が必要:
- プレビュー共有URLではない
- ログインしていない
- 認証系ページの場合
- 拡張機能による特殊な認証をおこなるためのページの場合
Parameters
- $admin : string
-
管理画面パス
Return values
bool —true: 認証が必要, false: アクセス可能(認証不要)
shouldRedirectToSignin()
シークレットコンテンツ遮断時に、会員サインイン画面へ誘導すべきかを判定する
private
shouldRedirectToSignin(bool $preferSignin, bool $isAuthRequiredPage, bool $canMemberSignin) : bool
ログイン画面のリダイレクト設定が「サインイン」で、かつ認証必須ページであるか、 または会員サインイン機能が有効な場合にサインイン画面へ誘導する。それ以外は管理者ログイン画面へ。 resolveSecretRedirectTarget() 経由でテストされる。
Parameters
- $preferSignin : bool
-
ログイン画面のリダイレクト設定がサインイン
- $isAuthRequiredPage : bool
-
認証が必要なページ
- $canMemberSignin : bool
-
会員サインイン機能が有効
Return values
bool —true: 会員サインイン画面へ, false: 管理者ログイン画面へ