при расширения модуля с dektrium на cingle.
выдаёт ошибки.
при авторизации
Setting unknown property: cinghie\yii2userextended\models\User::last_login_at
Код: Выделить всё
<?php
namespace dektrium\user\models;
use dektrium\user\Finder;
use dektrium\user\helpers\Password;
use dektrium\user\traits\ModuleTrait;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
use Yii;
use yii\base\Model;
class LoginForm extends Model
{
use ModuleTrait;
/** @var string User's email or username */
public $login;
/** @var string User's plain password */
public $password;
/** @var string Whether to remember the user */
public $rememberMe = false;
/** @var \dektrium\user\models\User */
protected $user;
/
protected $finder;
public function __construct(Finder $finder, $config = [])
{
$this->finder = $finder;
parent::__construct($config);
}
public static function loginList()
{
return ArrayHelper::map(User::find()->where(['blocked_at' => null])->all(), 'username', function ($user) {
return sprintf('%s (%s)', Html::encode($user->username), Html::encode($user->email));
});
}
public function attributeLabels()
{
return [
'login' => Yii::t('user', 'Login'),
'password' => Yii::t('user', 'Password'),
'rememberMe' => Yii::t('user', 'Remember me next time'),
];
}
public function rules()
{
$rules = [
'requiredFields' => [['login'], 'required'],
'loginTrim' => ['login', 'trim'],
'confirmationValidate' => [
'login',
function ($attribute) {
if ($this->user !== null) {
$confirmationRequired = $this->module->enableConfirmation
&& !$this->module->enableUnconfirmedLogin;
if ($confirmationRequired && !$this->user->getIsConfirmed()) {
$this->addError($attribute, Yii::t('user', 'You need to confirm your email address'));
}
if ($this->user->getIsBlocked()) {
$this->addError($attribute, Yii::t('user', 'Your account has been blocked'));
}
}
}
],
'rememberMe' => ['rememberMe', 'boolean'],
];
if (!$this->module->debug) {
$rules = array_merge($rules, [
'requiredFields' => [['login', 'password'], 'required'],
'passwordValidate' => [
'password',
function ($attribute) {
if ($this->user === null || !Password::validate($this->password, $this->user->password_hash)) {
$this->addError($attribute, Yii::t('user', 'Invalid login or password'));
}
}
]
]);
}
return $rules;
}
public function validatePassword($attribute, $params)
{
if ($this->user === null || !Password::validate($this->password, $this->user->password_hash))
$this->addError($attribute, Yii::t('user', 'Invalid login or password'));
}
public function login()
{
if ($this->validate()) {
$this->user->updateAttributes(['last_login_at' => time()]);
return Yii::$app->getUser()->login($this->user, $this->rememberMe ? $this->module->rememberFor : 0);
}
return false;
}
public function formName()
{
return 'login-form';
}
public function beforeValidate()
{
if (parent::beforeValidate()) {
$this->user = $this->finder->findUserByUsernameOrEmail(trim($this->login));
return true;
} else {
return false;
}
}
}
move_uploaded_file(/var/www/test.com/basic/web/img/users/4Z-9R3ki6Wg94iNrl4OUR-n8VPV43Tyb.jpg): failed to open stream: No such file or directory
Код: Выделить всё
class SettingsController extends BaseController
{
public function actionProfile()
{
// Load Model
$model = $this->finder->findProfileById(Yii::$app->user->identity->getId());
// Load Old Image
$oldImage = $model->avatar;
// Load avatarPath from Module Params
$avatarPath = Yii::getAlias(Yii::$app->getModule('userextended')->avatarPath);
// Create uploadAvatar Instance
//$model->save();
$image = $model->uploadAvatar($avatarPath);
// Ajax Validation
$this->performAjaxValidation($model);
//&& $model->save()
if ($model->load(Yii::$app->request->post())&& $model->save()) {
// revert back if no valid file instance uploaded
if ($image === false) {
$model->avatar = $oldImage;
} else {
// if is there an old image, delete it
if($oldImage)
{
$model->deleteImage($oldImage);
}
// upload new avatar
$model->avatar = $image->name;
}
Yii::$app->getSession()->setFlash('success', Yii::t('user', 'Your profile has been updated'));
return $this->refresh();
}
return $this->render('profile', [
'model' => $model
]);
}
}
Код: Выделить всё
public function uploadAvatar($filePath)
{
$file = UploadedFile::getInstance($this, 'avatar');
// if no file was uploaded abort the upload
if (empty($file)) {
return false;
} else {
// file extension
$fileExt = $file->extension;
// purge filename
$fileName = Yii::$app->security->generateRandomString();
// update file->name
$file->name = $fileName.".{$fileExt}";
// update avatar field
$this->avatar = $fileName.".{$fileExt}";
// save images to imagePath
$file->saveAs($filePath.$fileName.".{$fileExt}");
// the uploaded file instance
return $file;
}
}
public function getImagePath()
{
return $this->avatar ? Yii::getAlias(Yii::$app->getModule('userextended')->avatarPath).$this->avatar : null;
}
public function getImageUrl()
{
if ( !is_null($this->getAccountAttributes()) && !$this->avatar )
{
$imageURL = $this->getSocialImage();
} else {
$avatar = $this->avatar ? $this->avatar : 'default.png';
$imageURL = Yii::getAlias(Yii::$app->getModule('userextended')->avatarURL).$avatar;
}
return $imageURL;
}