/** * send forget mail to user * * @param array $parameters * @param string $column * @return mixed * @throws OAuthException * @throws QueryException */ protected function sendForgetMail(array $parameters = [], $column = null) { $username = isset($parameters['username']) ? $parameters['username'] : ''; $mailDriver = isset($parameters['mail_driver']) ? $parameters['mail_driver'] : 'default'; $callback = isset($parameters['callback']) ? $parameters['callback'] : 'auth/forget'; $table = Config::get('database.tables.table'); $database = Database::table($table); $userColumn = null === $column ? first(Config::get('database.tables.login')) : $column; $userInformation = $database->select(['email', 'id'])->where($userColumn, $username); if (!$userInformation->rowCount()) { throw new OAuthException(sprintf('%s Username is not exists', $username)); } $datas = $userInformation->first(); // we will find user email now $mailAddress = $datas->email; $generator = new SecurityKeyGenerator(); $key = $generator->random($username . $mailAddress); $forgets = Database::table('forgets'); $add = $forgets->insert(['key' => $key, 'user_id' => $datas->id]); if (!$add->isSuccess()) { throw new QueryException('Forget keys and user_id could not added to database, please try agein later'); } $url = Request::getBaseWithoutQuery(); if (!Str::endsWith($callback, "/")) { $callback .= "/"; } $url .= $callback . $key; $template = new TemplateGenerator(file_get_contents(RESOURCE . 'migrations/forget_mail.php.dist')); $content = $template->generate(['url' => $url, 'username' => $username]); $yourAddress = config('mail.your_address'); $send = Mail::send($mailDriver, function (DriverInterface $mail) use($mailAddress, $username, $content, $yourAddress) { return $mail->from($yourAddress, '')->subject('Password Recovery')->to($mailAddress, $username)->body($content)->send(); }); return $send; }
/** * Gets the value of an environment variable. Supports boolean, empty and null. * * @param string $key * @param mixed $default * @return mixed */ function env($key, $default = null) { $value = getenv($key); if ($value === false) { return value($default); } switch (strtolower($value)) { case 'true': case '(true)': return true; case 'false': case '(false)': return false; case 'empty': case '(empty)': return ''; case 'null': case '(null)': return; } if (Str::startsWith($value, '"') && Str::endsWith($value, '"')) { return substr($value, 1, -1); } return $value; }