| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 | <?php/** * Created by PhpStorm. * User:  NODELOG * Date: 16/7/26 * Time: 下午3:32 */namespace common\modules\user;use common\behaviors\UserBehaviorBehavior;use common\modules\user\clients\QqAuth;use common\modules\user\clients\WeiboAuth;use common\modules\user\clients\WeixinAuth;use Yii;use yii\authclient\clients\GitHub;use yii\base\BootstrapInterface;use yii\web\User;class Module extends \common\modules\Module implements BootstrapInterface{    public $enableGeneratingPassword = true;    /** @var bool Whether to show flash messages. */    public $enableFlashMessages = true;    /** @var bool Whether to enable registration. */    public $enableRegistration = true;    /** @var bool Whether user has to confirm his account. */    public $enableConfirmation = true;    /** @var bool Whether to allow logging in without confirmation. */    public $enableUnconfirmedLogin = false;    /** @var bool Whether to enable password recovery. */    public $enablePasswordRecovery = true;    /** @var bool Whether user can remove his account */    public $enableAccountDelete = false;    /**  @var string rbac默认管理员permission名 */    public $adminPermission = 'admin';    public $admins = [];    public $defaultPassword = '111111';    public $urlPrefix = 'user';    public $urlRules = [];    public function init()    {        parent::init();        if (!isset(Yii::$app->i18n->translations['user'])) {            Yii::$app->i18n->translations['user'] = [                'class' => 'yii\i18n\PhpMessageSource',                'basePath' => '@common/modules/user/messages'            ];        }    }    public function bootstrap($app)    {        if ($app->id == 'backend') {            Yii::$app->set('user', [                'class' => 'yii\web\User',                'identityClass' => 'common\modules\user\models\User',//                'loginUrl' => ['/user/default/qrcode-login'],                'loginUrl' => ['/user/default/login'],                'enableAutoLogin' => true,                'on afterLogin' => function($event) {                    $event->identity->touch('login_at');                },                'idParam' => '__idBackend',                'identityCookie' => ['name' => '_identityBackend', 'httpOnly' => true]            ]);        } else {            Yii::$app->set('user', [                'class' => 'yii\web\User',                'identityClass' => 'common\modules\user\models\User',                'loginUrl' => ['/user/security/login'],                'enableAutoLogin' => true,                'on afterLogin' => function($event) {                    $event->identity->touch('login_at');                },                'as userBehavior' => [                    'class' => UserBehaviorBehavior::className(),                    'eventName' => User::EVENT_AFTER_LOGIN,                    'name' => 'login',                    'rule' => [                        'cycle' => 24,                        'max' => 1,                        'counter' => 10,                    ],                    'content' => '{user.username}在{extra.time}登录了系统',                    'data' => [                        'extra' => [                            'time' => date('Y-m-d H:i:s')                        ]                    ]                ]            ]);            $config = $this->params;            $params = [                'qq' => [                    'class' => QqAuth::className(),                    'clientId' => $config['qq_client_id'],                    'clientSecret' => $config['qq_client_secret']                ],                'github' => [                    'class' => GitHub::className(),                    'clientId' => $config['github_client_id'],                    'clientSecret' => $config['github_client_secret']                ],                'weibo' => [                    'class' => WeiboAuth::className(),                    'clientId' => $config['weibo_client_id'],                    'clientSecret' => $config['weibo_client_secret']                ],                'weixin' => [                    'class' => WeixinAuth::className(),                    'clientId' => $config['weixin_client_id'],                    'clientSecret' => $config['weixin_client_secret']                ],            ];            $openClients = $config['open_client'];            $openParams = [];            if (!empty($openClients)) {                foreach ($openClients as $client) {                    $client = strtolower($client);                    $openParams[$client] = $params[$client];                }            }            $app->set('authClientCollection', [                'class' => 'yii\authclient\Collection',                'clients' => $openParams            ]);            $this->urlRules = [                '<id:\d+>' => 'default/index',                '<action:(login|logout)>' => 'security/<action>',                '<action:(signup)>' => 'registration/<action>',                '<action:(up|article-list|create-article|update-article|notice|favourite)>' => 'default/<action>',            ];        }        $configUrlRule = [            'prefix' => $this->urlPrefix,            'rules'  => $this->urlRules,        ];        if ($this->urlPrefix != 'user') {            $configUrlRule['routePrefix'] = 'user';        }        $configUrlRule['class'] = 'yii\web\GroupUrlRule';        $rule = Yii::createObject($configUrlRule);        $app->urlManager->addRules([$rule], false);    }}
 |