โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะ’ ะพะฑั‰ะตะผ, ั‡ะตั€ะตะท ะผะธะณั€ะฐั†ะธัŽ $this->insert('{{%user}}', [ 'id' => 1, 'nickname' => 'admin', 'email' => 'admin@example.com', 'auth_key' => Yii::$app->security->generateRandomString(), 'password_hash' => Yii::$app->security->generatePasswordHash('admin'), ]);
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะ’ ั‚ะฐะบะพะผ ะดัƒั…ะต
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะพะฑัะทะฐั‚ะตะปัŒะฝั‹ะต ะฟะพะปั ัะฐะผ ะฝะฐะบะธะฝะตัˆัŒ
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ั ะฝะต ะฒะธะดะตะป ั‚ะฒะพัŽ ะผะพะดะตะปัŒ
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะผะธะณั€ะฐั†ะธัŽ ัะพะทะดะฐั‚ัŒ ั ะบะพะฝัะพะปะธ php yii migrate create add_admin_user
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะทะฐะฟัƒัั‚ะธั‚ัŒ php yii migrate/up
darkwoolf
ั‚ัƒั‚?
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะผะพะถะฝะพ ะธ ั‚ัƒั‚, ะฒ ะผะตั‚ะพะดะต up
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ั‚ะฐะบ
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะฃ ั‚ะตะฑั ะธะดะตะฝั‚ะธั„ะธั†ะธั€ัƒัŽั‰ะธะน ะฝะต nickname ะฐ login ัะบะพั€ะตะต ะฒัะตะณะพ?
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะ•ัะปะธ ะดะฐ, ั‚ะพ ะทะดะตััŒ ะธัะฟั€ะฐะฒัŒ ะฝะฐ 'login' => $username,
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
'nickname' => $username
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะฒ ะผะธะณั€ะฐั†ะธัŽ $this->insert('{{%user}}', [ 'id' => 1, 'login' => 'admin', 'email' => 'admin@example.com', 'auth_key' => Yii::$app->security->generateRandomString(), 'password_hash' => Yii::$app->security->generatePasswordHash('admin'), ]);
darkwoolf
ะฐ ะผะพะถะตั‚ ะธ ะฝะตั‚
darkwoolf
ะธะฑะพ ั‰ะฐั ะฒะพั‚ ั‚ะฐะบ ะฒะพะพะฑั‰ะต
darkwoolf
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะฃ ั‚ะตะฑั login, email, nickname
darkwoolf
ะฃ ั‚ะตะฑั login, email, nickname
ะณะดะต ะฝะธะบะฝะตะนะผ?
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ั‡ั‚ะพ-ั‚ะพ ะธะท ัั‚ะพะณะพ ะดะพะปะถะฝะพ ะธะดะตะฝั‚ะธั„ะธั†ะธั€ะพะฒะฐั‚ัŒ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปั
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะ•ัะปะธ nickname ะฟัะตะฒะดะพะฝะธะผ (ะดะปั ะฟัƒะฑะปะธะบะธ) ั‚ะพ ัะบะพั€ะตะต ะฟั€ะพะฒะตั€ะบะฐ ะดะพะปะถะฝะฐ ะฑั‹ั‚ัŒ ะฟะพ login ะธะปะธ email. ะ•ัะปะธ email ัƒะฝะธะบะฐะปัŒะฝั‹ะน ั‚ะพ login ะผะพะถะฝะพ ะฟั€ะพัั‚ะพ ัƒะฟั€ะฐะทะดะฝะธั‚ัŒ
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะธ ะธัะบะฐั‚ัŒ ะฟะพ ะผั‹ะปัƒ
darkwoolf
ะฟะพะฟั€ะพะฑะพะฒะฐั‚ัŒ ะฒะตะทะดะต ะทะฐะผะตะฝะธั‚ัŒ ะฝะฐ ะตะผะตะนะป?
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะฝัƒ ะธะปะธ ะพัั‚ะฐะฒะธั‚ัŒ ะดะปั "ะฟะพะปัŒะทะพะฒะฐั‚ะตะปะตะน" ะบะพะผัƒ ะปะตะฝัŒ ะผั‹ะปะพ ะฒ ั„ะพั€ะผัƒ ะฐะฒั‚ะพั€ะธะทะฐั†ะธะธ ะฒะฒะพะดะธั‚ัŒ)
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะฝะต ะฒะตะทะดะต
darkwoolf
darkwoolf
darkwoolf
ั ะตะผะตะนะปะพะผ ะฝะต ั€ะฐะฑะพั‚ะฐะตั‚
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ั„ะพั€ะผะฐ ะฐะฒั‚ะพั€ะธะทะฐั†ะธะธ, ะฝะฐะดะพ ะฟะพะปะต ะฝะฐ email ัะผะตะฝะธั‚ัŒ, ะฒ User ะผะพะดะตะปะธ ะดะพะฑะฐะฒะธั‚ัŒ ะผะตั‚ะพะด /** * Finds user by email * * @param string $email * @return static|null */ public static function findByEmail($email) { return static::findOne(['email' => $email, 'status' => self::STATUS_ACTIVE]); } ะฒ ะผะพะดะตะปะธ ะฒ findUser() ะทะฐะผะตะฝะธั‚ัŒ byUsername ะฝะฐ if ($this->_user === false) { $this->_user = User::findByEmail($this->email); }
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะธ ะฒ ั„ะพั€ะผะต public $username; ะทะฐะผะตะฝะธั‚ัŒ ะฝะฐ public $email;
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะธ ะฒ ั„ะพั€ะผะต ะฒ rules() ะฟะพะผะตะฝัั‚ัŒ // Username and password are both required [['username', 'password'], 'required'], ะฝะฐ // email and password are both required [['email', 'password'], 'required'],
darkwoolf
ัƒ ะผะตะฝั ะฝะตั‚ัƒ ะผะตั‚ะพะดะฐ `findByEmail`ะœะฝะต ะตะณะพ ัะพะทะดะฐั‚ัŒ?
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะผะพะถะตัˆัŒ ะดะพะฑะฐะฒะธั‚ัŒ ะฟะพะด findByUsername
darkwoolf
darkwoolf
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะ•ัะปะธ ะฟะพ ัŽะทะตั€ะฝะตะนะผัƒ ะฝะต ะฑัƒะดะตัˆัŒ ะฐะฒั‚ะพั€ะธะทะพะฒั‹ะฒะฐั‚ัŒ, ั‚ะพ ัั‚ะพ ะปะธัˆะฝะตะต
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะœะพะถะฝะพ ัƒะดะฐะปะธั‚ัŒ ะผะตั‚ะพะด
darkwoolf
ะผะฝะต ั‚ะพะปัŒะบะพ ั‡ั‚ะพะฑั‹ ั ะผะพะณ
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะะธะถะต ะฒ getUser ะณะปะฐะฒะฝะพะต ะทะฐะผะตะฝะธั‚ัŒ
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ัะฝะพัะธ, getUser ะฟะพะฟั€ะฐะฒะธะป?
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะฒ LoginForm
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะธ ะฒัŒัŽ form.php ัะบะพั€ะตะต ะฒัะตะณะพ
darkwoolf
ัะฝะพัะธ, getUser ะฟะพะฟั€ะฐะฒะธะป?
ั‚ะฐะบ ั‚ัƒั‚ ะฝะตั‚ัƒ ั‚ะฐะบะพะณะพ ะผะตั‚ะพะดะฐ
darkwoolf
ะธะปะธ ั ั‡ั‚ะพ-ั‚ะพ ะฟั€ะพะฟัƒัั‚ะธะป
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะฃะดะฐะปะธะป ะผะตั‚ะพะด fibdByUseNa*?
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะ—ะฐะฟัƒัั‚ะธ, ะฟะพัะผะพั‚ั€ะธ ั‚ะฐะผ ะพัˆะธะฑะบัƒ ะบะธะฝะตั‚ ะณะดะต ะฒั‹ะทะพะฒ
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะ ะฒะพะพะฑั‰ะต, ะตัั‚ัŒ ะผะตั‚ะพะด
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะ’ะพั‚ ะถะต ะฒั‹ะทะพะฒ
darkwoolf
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
6 ัั‚ั€ะพะบะฐ ัะฝะธะทัƒ
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะัƒ, ั‚ั‹ ะฝะต ะทะฐะผะตะฝะธะป username ะฝะฐ email
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะ—ะดะตััŒ ะถะต
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
public $email; ะฒะผะตัั‚ะพ publick $username;
darkwoolf
ะฏ ะฟะพะฝัะป
darkwoolf
darkwoolf
ะธ ะฒ getUSer?
darkwoolf
ะธ ะฟะพั‚ะพะผ
darkwoolf
ะตัะปะธ ั‚ะฐะผ ั ะฝะธะถะฝะธะผ ะฟะพะดั‡ั‘ั€ะบะธะฒะฐะฝะธะต ั‚ะพ ั‚ะพะถะต ะตะณะพ ะฟะธัะฐั‚ัŒ?
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะดะฐ ะธ ะทะดะตััŒ ะทะฐะผะตะฝะธั‚ัŒ findUserByUsername ะฝะฐ findUserByEmail ะธ $this->username ะฝะฐ $this->email
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะธ ะฒัะต, ะดะพะปะถะฝะพ ั€ะฐะฑะพั‚ะฐั‚ัŒ
darkwoolf
models/loginForm.php
darkwoolf
https://hastebin.com/cadulefuvi.xml
darkwoolf
darkwoolf
darkwoolf
ะฐะฐะฐ
darkwoolf
ั‚ะฐะผ ะบะฐะถะธััŒ ะฒ 76 ัั‚ั€ะพะบะต
darkwoolf
ะฒ LoginForm $this->email = User::findUserByEmail($this->email);
darkwoolf
ะญั‚ะพ ะถะต ะฝะต ะฟั€ะฐะฒะธะปัŒะฝะพ ั‡ั‚ะพ ั‚ะฐะผ ะพะฑะปะฐัั‚ัŒ ะทะฝะฐั‡ะตะฝะธะน User?
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
$this->_user ะถะต ะฑั‹ะปะพ
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะฝะต ะฝะฐะดะพ ะผะตะฝัั‚ัŒ
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
$this->_user = User::find***
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะธ ัั‚ั€ะพะบะพะน ะฒั‹ัˆะต
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
ะธ ะดะฒัƒะผั ัั‚ั€ะพะบะฐะผะธ ะฝะธะถะต
โ˜•๏ธ ๐•ฝ๐–”๐–ˆ๐–๐–Š๐–™๐•ฝ๐–†๐–ˆ๐–ˆ๐–”๐–”๐–“
if ($this->_user === false) { $this->_user = User::findUserByEmail($this->email); } return $this->_user;