public static function getRules() { $sql = "SELECT aid,role_id,model_id,feature_id,scope_id FROM rule ORDER BY role_id ASC"; $rules = Haproxy::findBySql($sql)->asArray()->all(); $acl = array(); $unique = array(); foreach ($rules as $k => $v) { $app = Haproxy::findBySql("SELECT id,name FROM app WHERE id={$v['aid']}")->asArray()->one(); $acl[$k]['app'] = $app['name']; $acl[$k]['role_id'] = $v['role_id']; $user = Haproxy::findBySql("SELECT uid FROM role_user WHERE rid={$v['role_id']} ORDER BY uid ASC")->asArray()->all(); $userStr = ''; foreach ($user as $vu) { $userStr .= $vu['uid'] . " "; } $acl[$k]['user'] = $userStr; $model = Haproxy::findBySql("SELECT id,name FROM model WHERE id={$v['model_id']}")->asArray()->one(); $acl[$k]['model'] = $model['name']; $feature = Haproxy::findBySql("SELECT id,name FROM feature WHERE id={$v['feature_id']}")->asArray()->one(); $acl[$k]['feature'] = $feature['name']; $scope = Haproxy::findBySql("SELECT scope_id FROM rule WHERE aid={$v['aid']} AND role_id={$v['role_id']} AND model_id={$v['model_id']} AND feature_id={$v['feature_id']} ORDER BY scope_id ASC")->asArray()->all(); $scopeStr = ''; foreach ($scope as $vs) { $scopeStr .= $vs['scope_id'] . " "; } $acl[$k]['scope'] = $scopeStr; $unique[$k] = $v['aid'] . $v['role_id'] . $v['model_id'] . $v['feature_id']; } $rules = array('acl' => $acl, 'unique' => $unique); return $rules; }
public function actionIndex() { $rules = Haproxy::getRules(); $acl = $rules['acl']; $unique = array_unique($rules['unique']); $rule = array(); foreach ($unique as $k => $v) { $rule[] = $acl[$k]; } $str = ''; foreach ($rule as $v) { $str .= "acl app_" . $v['app'] . "_role_" . $v['role_id'] . "_" . $v['model'] . "_" . $v['feature'] . "_app\t\thdr(X-App)\t\t" . $v['app'] . "\n"; $str .= "acl app_" . $v['app'] . "_role_" . $v['role_id'] . "_" . $v['model'] . "_" . $v['feature'] . "_role\t\thdr(X-Role)\t\t" . $v['user'] . "\n"; $str .= "acl app_" . $v['app'] . "_role_" . $v['role_id'] . "_" . $v['model'] . "_" . $v['feature'] . "_scopes\t\thdr(X-Scope)\t" . $v['scope'] . "\n"; $str .= "acl app_" . $v['app'] . "_role_" . $v['role_id'] . "_" . $v['model'] . "_" . $v['feature'] . "_feature\tpath_reg\t\t-i\t\t/" . $v['model'] . "/" . $v['feature'] . "\n"; $str .= "use_backend dynamic\tif app_" . $v['app'] . "_role_" . $v['role_id'] . "_" . $v['model'] . "_" . $v['feature'] . "_app app_" . $v['app'] . "_role_" . $v['role_id'] . "_" . $v['model'] . "_" . $v['feature'] . "_role app_" . $v['app'] . "_role_" . $v['role_id'] . "_" . $v['model'] . "_" . $v['feature'] . "_scopes app_" . $v['app'] . "_role_" . $v['role_id'] . "_" . $v['model'] . "_" . $v['feature'] . "_feature\n\n"; } echo $str; // return $this->render('index',['username'=>'Alex']); }