Cakeの初期設定

cakePHP3.5でアプリでも創ってみようぞ。
とりあえずプロジェクトまで創って、Bitbucketにコミットしてある。
DBはmysqlで、ちゃちゃっとインストールしてある。
ローカルのDBクライアントはSequel Proを使っちょるばい。
だいたいログイン周り必要になるので、ACL含めて最初から作っとくぜい。

1.mysqlにデータベース作る
  データベースの名前と、ユーザとパスワードは適当。

mysql -u root -p
CREATE DATABASE DATABASE_NAME CHARACTER SET utf8;
grant all privileges on DATABASE_NAME.* to USER@localhost identified by 'PWD';
FLUSH PRIVILEGES;

2.Sequel Proに今回つくったDBへのアクセスを追加する

3.とりあえずユーザー周りのテーブル作る

  CREATE TABLE `groups` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `name` varchar(100) NOT NULL,
   `created` datetime DEFAULT NULL,
   `modified` datetime DEFAULT NULL,
   PRIMARY KEY (`id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  CREATE TABLE `users` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `username` varchar(255) NOT NULL,
   `PASSWORD` varchar(255) DEFAULT NULL,
   `group_id` int(11) NOT NULL,
   `role` varchar(25) DEFAULT NULL,
   `created` datetime DEFAULT NULL,
   `modified` datetime DEFAULT NULL,
   PRIMARY KEY (`id`),
   UNIQUE KEY `username` (`username`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

4.cakePHPにデータベース接続設定する
  プロジェクトの中のconfig/app.default.phpをコピってconfig/app.phpを作る
  ファイルの中にDatasourcesについて記述されているところを書き換える。
  SECURITY_SALTも変えてなかったら、適当にかえる。

5.Composerで「cakephp/acl」を追加する
  composer.jsonのrequireに以下追加

6.usersとgroupをbake allしとく

  php bin/cake.php bake all users
  php bin/cake.php bake all groups

7.アクセスコントロール(ACL)使うぜの設定

  config/bootstrap.php を開いて一番最後にでも以下を追記
  Plugin::load('Acl', ['bootstrap' => true]);

8.いろいろ修正するぜ!のコーナー
  ここを参考にすると良い。
  っていうか、最初からこれだけ見ればOKって話もある。
  https://github.com/mattmemmesheimer/cakephp-3-acl-example

9.アクセスコントロールのテーブル作る

  php bin/cake.php Migrations.migrations migrate -p Acl
  php bin/cake.php acl_extras aco_sync

10.その後、なにか追加したら


  php bin/cake.php acl_extras aco_update

12.ユーザーとかグループとか作る

11.パーミッション設定祭り開始


  groupのIDが1番の人がAdminだったとして、全アクセスつけるならこれ。
  php bin/cake.php acl grant Groups.1 controllers
  groupのIDが2番の人は、とりあえず全アクセスは剥奪。
  php bin/cake.php acl deny Groups.2 controllers
  だけども、Userテーブル操作するくらならOKだぞよ。
  php bin/cake.php acl grant Groups.2 controllers/Users
  groupのIDが3番の人は、ユーザーの一覧くらいはみれるけど、それだけじゃ。
  php bin/cake.php acl deny Groups.3 controllers/Users/index

こんなかんじ。
パーミッション設定祭りは、ちょ〜めんどうなんだけどさ。
簡単に設定できそうなヘルパー入れたらアカンかった。

ACL周りのテーブルは派手にドロップしても、簡単に作り直せるよ。


DROP TABLE acos;
DROP TABLE aros;
DROP TABLE aros_acos;
DROP TABLE acl_phinxlog;
TRUNCATE groups;
TRUNCATE users;


いいなと思ったら応援しよう!