2017 © Pedro Peláez
 

yii2-extension yii2-auth

Yii2 Auth with Operation Category

image

funson86/yii2-auth

Yii2 Auth with Operation Category

  • Monday, April 2, 2018
  • by funson86
  • Repository
  • 1 Watchers
  • 8 Stars
  • 736 Installations
  • PHP
  • 2 Dependents
  • 0 Suggesters
  • 4 Forks
  • 0 Open issues
  • 2 Versions
  • 0 % Grown

The README.md

Yii2 Auth

Yii2 Auth could manage operations in category, you could integrate it to Yii2 Adminlte, (*1)

Installation

The preferred way to install this extension is through composer., (*2)

Either run, (*3)

php composer.phar require funson86/yii2-auth "dev-master"

or add, (*4)

"funson86/yii2-auth": "*"

to the require section of your composer.json file., (*5)

Usage

Once the extension is installed, simply use it in your code by :, (*6)

Migration

Migration run, (*7)

yii migrate --migrationPath=@funson86/auth/migrations

Or insert to table setting manually., (*8)

CREATE TABLE `auth_operation` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `parent_id` int(11) NOT NULL DEFAULT 0,
  `name` varchar(32) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `parent_id` (`parent_id`)
) ENGINE=InnoDB AUTO_INCREMENT=100000 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='Auth Operation';

CREATE TABLE `auth_role` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL,
  `description` varchar(255) DEFAULT NULL,
  `operation_list` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='Auth Role';

INSERT INTO `auth_role` VALUES ('1', 'Super Admin', '', 'all');
INSERT INTO `auth_role` VALUES ('3', 'Normal Admin', '', 'backendLogin;viewUser;viewRole');

INSERT INTO `auth_operation` VALUES ('111', '0', 'basic');
INSERT INTO `auth_operation` VALUES ('113', '0', 'user');
INSERT INTO `auth_operation` VALUES ('114', '0', 'role');
INSERT INTO `auth_operation` VALUES ('11101', '111', 'backendLogin');
INSERT INTO `auth_operation` VALUES ('11302', '113', 'viewUser');
INSERT INTO `auth_operation` VALUES ('11303', '113', 'createUser');
INSERT INTO `auth_operation` VALUES ('11304', '113', 'updateUser');
INSERT INTO `auth_operation` VALUES ('11305', '113', 'deleteUser');
INSERT INTO `auth_operation` VALUES ('11402', '114', 'viewRole');
INSERT INTO `auth_operation` VALUES ('11403', '114', 'createRole');
INSERT INTO `auth_operation` VALUES ('11404', '114', 'updateRole');
INSERT INTO `auth_operation` VALUES ('11405', '114', 'deleteRole');

ALTER TABLE `user` ADD COLUMN `auth_role` int(11) AFTER `status`;
UPDATE `user` set `auth_role`=3;
UPDATE `user` set `auth_role`=1 where `username` = 'admin';

Config /common/config/main.php to check authority

After add the following code, the code if(!Yii::$app->user->can('createRole')) throw new ForbiddenHttpException(Yii::t('app', 'No Auth')); in each action of controller could check whether current user have the authority to run this action or not., (*9)

    'components' => [
        'user' => [
            'class' => 'funson86\auth\User',
            'enableAutoLogin' => true,
        ],
    ],

CRUD Auth Role with operation at backend

Config backend modules in backend/config/main.php to manage settings, (*10)

    'modules' => [
        'auth' => [
            'class' => 'funson86\auth\Module',
        ],
    ],

Access backend url: http://you-domain/backend/web/auth, (*11)

Add Your Auth Operation

You could add your new operation based on business by migration or insert to table auth_operation manually., (*12)

INSERT INTO `auth_operation` VALUES ('115', '0', 'Service');
INSERT INTO `auth_operation` VALUES ('11501', '115', 'viewService');

Use Your Operation Check

Once you add new operation in auth_operation, add if (!Yii::$app->user->can('viewService')) throw new ForbiddenHttpException(Yii::t('app', 'No Auth')) at the beginning of action of controller like the following:, (*13)

class ServiceController extends Controller
{
    public function actionView($id)
    {
        if (!Yii::$app->user->can('viewService')) throw new ForbiddenHttpException(Yii::t('app', 'No Auth'));
        // you business code
    }
}

Translation

If no translation, it will show you 'viewService' at the backend management. You could add the translation in backend/messages/en/auth.php or backend/messages/zh-CN/auth.php. Like the following:, (*14)

return [
    'viewService' => 'View Service',
];

Preview

Yii2-Auth, (*15)

The Versions

02/04 2018

dev-master

9999999-dev

Yii2 Auth with Operation Category

  Sources   Download

Apache-2.0

The Requires

 

by Funson Lee

extension auth yii2 rbac role

10/02 2015

0.0.1

0.0.1.0

Yii2 Auth with Operation Category

  Sources   Download

Apache-2.0

The Requires

 

by Funson Lee

extension auth yii2 rbac role