Azukiシステムの基本機能

ここでは、システム構成、パブリッシュ、ログ、設定ファイルについて解説します

システム構成

Azukiシステムは初期状態として3階層の管理システムと一般公開されるサイトで構成されます。

階層名 URL 概要
1. システム管理 /system システム全般の管理機能を提供する管理画面
2. 組織管理 /manage サイトやグループごとの管理機能を提供する管理画面
3. ユーザーマイページ /mypage 各ユーザーに提供される管理画面
4. フロント画面 / 一般公開されるサイト

システム管理

DirectorsTableSeeder.phpで設定したログイン情報にてログインできます。
システム管理者のログインIDはemailになります。

システム管理では以下の管理機能を提供しています。

メニュー名 URL 概要
1. システム管理者 /system/directors システム管理者の登録・編集・削除を行います
2. サイト管理者 /system//managers 組織管理階層管理の登録・編集・削除を行います
本システムで組織管理者は一般にサイト管理者として扱っています
3. ユーザー管理 /system/users ユーザーの登録・編集・削除を行います
ユーザーはフロント画面からもユーザー自身で登録されたものもあります
また、ユーザー自身により編集も行われます
4. ロール管理 /system/system-roles システム管理者に割り振ることが出来る役割を管理します
MasterDataTableSeeder.phpにより、スーパーバイザーとユーザー管理者という二つのロールを初期設定しています
ロールごとにアクセス制限を設定できます。アクセス制限の登録はURLベースとなりワイルドカードが使用できます
具体的な判定方法はrequest->is('url')です
5. 組織管理 /system/organizations 所属機能が有効場合、ここで組織の登録・編集。削除を行います
6. アクセスログ /system/access-logs アクセスログ機能が有効の場合、アクセスログを確認できます
7. ログインログ /system/login-logs ログインログ機能が有効の場合、ログインログを確認できます
8. オペレーションログ /system/operation-logs オペレーションログ機能が有効の場合、オペレーションログを確認できます
9. システムログ /system/system-logs システムログを確認できます

本システムはサイト管理者の階層を店舗ごとや組織ごとといったグループ(以下、所属と呼びます)に分けて管理することができます
そのため組織管理と呼称していますが、所属機能は初期設定では無効でありその場合、サイト管理者としての位置づけとしてとらえています

組織管理

システム管理にて登録したサイト管理者の情報でログインできます
サイト管理者のログインIDはメールアドレスではなくログインIDです
メールアドレスは任意項目ですが、メールアドレスの登録がないユーザーはパスワードリマインダーが利用できません

組織管理では以下の管理機能を提供しています。

メニュー名 URL 概要
1. 管理者 /manage//managers 管理者の登録・編集・削除を行います
所属が有効の場合、同じ所属のデータのみ操作可能です
2. ユーザー /manage/users ユーザーの登録・編集・削除を行います
現状では所属が有効でもユーザーは全所属に共通となり、所属による制限はかかりません
3. サンプル /manage/sample 本システムで構築されたサンプルの管理画面です
サンプル画面を有効にすることでアクセス可能になります

所属が有効であってもサイト管理者はmanagersテーブルにて一意のログインID制限でバリデートしており、所属が違っていても登録済みのログインIDは使用できません
所属有効時にログインIDを所属ごとに一意とする方法は別途記述する予定です。

ユーザーマイページ

ユーザー情報の編集ができます。

パブリッシュ

seed時記載したartisanのpublishコマンド

$ php artisan vendor:publish --provider="Azuki\ServiceProvider" --tag=seed

にて本システムが提供しているタグとその対象について説明します

タグの一覧は以下となります

対象 タグ名 出力先 概要
1. 設定 config config/ 設定ファイルをパブリッシュします。
パプリッシュされる設定ファイルは以下となります
  • azuki.app.php
  • azuki.standard.php
  • azuki.auth.php
  • azuki.execute_type.php
  • azuki.master.php
  • azuki.mail.php
  • azuki.upload_file.php
  • azuki.menu_list.php
  • azuki.icon.php
  • 00_define_common.php
2. 設定 azuki-app config/ Contratsの実体設定ファイルであるazuki.app.phpだけをパブリッシュします
3. 設定 azuki-config config/ 基本設定ファイルであるazuki.standard.phpだけをパブリッシュします
4. 定義 define config/ 定義ファイルである00_define_common.phpだけをパブリッシュします
5. テンプレート view resources/views/vendor/azuki/ テンプレートファイルをパブリッシュします
パブリッシュされたテンプレートファイルを変更することでUIの変更ができます
6. シード seed database/seeds/ シーダーをパブリッシュします
シーダーはパブリッシュ後composer dump-autoloadすることでartisanから使用可能になります
7. 言語 lang resources/views/vendor/azuki/ 言語ファイルをパブリッシュします
エラーメッセージの日本語化に必要です
8. ルーティング route routes/ ルーティングファイルazuki.web.phpをパブリッシュします
出力されたルーティングファイルを修正することでルーティングを変更できます
9. 公開 public public/vendor/azuki/ 公開ディレクトリへ展開が必要なファイルをパブリッシュします。
パプリッシュされるディレクトリは以下となります
  • public/vendor/azuki/foundation-icons
  • public/vendor/azuki/css
  • public/vendor/azuki/img
  • public/vendor/azuki/js
10. 未コンパイルJS/CSS assets resources/sass/vendor/azuki/ resources/js/vendor/azuki/ 本システムはfoundationを使用し、sassを用いてapp.cssapp.jsを作成しています。
これらファイルをコンパイルする元ファイルを出力します

ログ

ログ名 テーブル名 管理画面 概要
1. メール azuki_mail_logs × システムからのメール送信を記録します
送信前にテーブルに記録し、送信後にresult.failuresカラムを更新します
resultが0のものは送信後のデータ更新がされていないレコードになります
これは送信処理が正常に行われていない可能性を示唆します。
また、メールサーバーからのエラーメールを補足する仕組みは入っていません
ですので、メール送信結果はsendmailコマンドやメールサーバーのレスポンスに依存したものであり送信できたことを保証するものではありません
2. システム azuki_system_logs システムの動作に関するログを記録します
コマンドで定期的に処理しているタスクなどシステムの動作状況を確認するのに役立つログをここに残すように想定しています
3. オペレーション azuki_operation_logs データ操作に関するログを記録します
対象となったデータと変更点、操作した人などを確認できます
各ログへの記録は対象外としています
4. アクセス azuki_access_logs サイトへのアクセスを記録します
アクセスされた日時、URL、アクセスした人、アクセス時の$_SERVERを確認できます
5. ログイン azuki_login_logs ログイン情報を記録します
誰がいつログインしたかを確認できます
ログの記録有無はメールログを除き、設定で有効・無効を切り替えることができます
各ログテーブルは大量のデータになることが想定されますので、適度にメンテナンスしてください

設定ファイル

設定ファイルはazuki.auth.phpならびに00_define_common.phpを除き、Laravelの仕組みによって マージ処理されます
azuki.auth.phpは原則としてauth.phpを上書きします
各設定ファイルの詳細な設定内容については、各設定ファイルを参照してください

設定ファイル名 概要
1. azuki.app.php AzukiシステムのContractsで登録されているクラスの実体設定を行います
システムで設定されている実態を置き換える場合にこの設定ファイルで置き換えの指定ができます
2. azuki.standard.php Azukiパッケージの基本設定を管理します
主要な設定内容は
  • enable_azuki_error_handler[def:true|env:AZUKI_ERROR_HANDLER]
  • auth.overwrite[def:true]
  • routing[def:true]
  • organizations[def:false|env:AZUKI_ORGANIZATION_SUPPORT]
  • contents[コンテンツの制御]
  • url[URLベースの制御]
  • record_access_logs[def:true|env:AZUKI_RECORD_ACCESS_LOGS]
  • record_login_logs[def:true|env:AZUKI_RECORD_LOGIN_LOGS]
  • record_operation_logs[def:true|env:AZUKI_RECORD_OPERATION_LOGS]
  • record_system_logs[def:true|env:AZUKI_RECORD_SYSTEM_LOGS]
  • subDir[システム管理(/system)サイト管理(/manage)URLパスの置き換え設定]
3. azuki.auth.php Azukiシステムの各管理者ならびにユーザーの認証を行うための設定です
Laravelのauth.phpの設定を強制的に上書きしてシステムを起動します
4. azuki.execute_type.php まとまった処理実行を行うための仕組みとして用意しているExecuterの設定を行います
5. azuki.icon.php システム内で使用している各種アイコンの設定を行います。ここで指定した内容は<i>タグのclass属性に指定されます
※メニューのアイコン設定はazuki.menu_list.phpで行います
6. azuki.master.php マスターデータの定義を行っている設定ファイルです
マスターデーターが必要な場合、このファイルに記述することでAzukiシステム内で簡単に使用することができます
データベースで定義しているマスターデータもここに記述します
7. azuki.mail.php メール送信に関する追加設定です
ここにメール送信に関する設定を追記することでメール送信の実装が楽になります
8. azuki.upload_file.php ファイルのアップロードに関する設定を行います
実際のアップロードを処理するクラスやサイズ、キャッシュの有無、保存先などを設定できます
ここで定義したtypeをコントローラ側で設定することでアップロード機能が簡単に実装できるようになっています
9. azuki.menu_list.php システム管理、サイト管理画面のグローバルメニューの定義です
将来的にDB管理に代わる可能性があります
10. azuki.icon.php 各メニューアイコン以外のアイコン設定を行います
アイコンの指定は<i>タグのclassで指定します
本システムはfoundation-iconを使用しているのでその場合は「fi-xxxx」形式になります
メニューのアイコンはazuki.menu_list.phpファイルの方で設定します
11. 00_define_common.php 各種定義ファイルです
このファイルで定義したdefineを使うことで直接値を使用することなく、コードの整合性を取るように設計しています
設定ファイルはパブリッシュされた設定ファイルがあればそちらが有効になります。