小白兔晒黑了

导航

 

1 消息通知

1.1 安装与部署

https://github.com/laracasts/flash

composer require laracasts/flash

\config\app.php

'providers' => [
//。。。。 Laracasts\Flash\FlashServiceProvider
::class, ]

1.2 使用

修改模板

\resources\views\layouts\app.blade.php

 <div class="container">
        @include('flash::message')
 </div>

 

 

修改控制器 

\app\Http\Controllers\Auth\LoginController.php

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/home';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }
    
    /**
     *  重写方法
     */
    public function login(Request $request)
    {
        $this->validateLogin($request);
        
        // If the class is using the ThrottlesLogins trait, we can automatically throttle
        // the login attempts for this application. We'll key this by the username and
        // the IP address of the client making these requests into this application.
        if (method_exists($this, 'hasTooManyLoginAttempts') &&
          $this->hasTooManyLoginAttempts($request)) {
            $this->fireLockoutEvent($request);
           
            return $this->sendLockoutResponse($request);
        }
        
        if ($this->attemptLogin($request)) {
            //flash('欢迎回来','success');
            //flash('欢迎回来')->important();
           //flash('欢迎回来')->success();
            flash('欢迎回来')->overlay();
            return $this->sendLoginResponse($request);
        }
        
        // If the login attempt was unsuccessful we will increment the number of attempts
        // to login and redirect the user back to the login form. Of course, when this
        // user surpasses their maximum number of attempts they will get locked out.
        $this->incrementLoginAttempts($request);
        
        return $this->sendFailedLoginResponse($request);
    }
    
    /**
     * 重写登录验证方法
     * activated 必须为1 才能登录
     */
    protected function attemptLogin(Request $request)
    {
        $credentials = array_merge($this->credentials($request),['activated'=>1]);
        return $this->guard()->attempt(
          $credentials, $request->filled('remember')
        );
    }
}
View Code

\app\Http\Controllers\EmailController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;
use Illuminate\Support\Facades\Auth;

class EmailController extends Controller
{
    //
    public function verify($token)
    {
        $user = User::where('activation_token',$token)->first();
        if(is_null($user)){
            flash('邮箱验证失败','danger');
            return redirect('/');
        }
        $user->activated = 1;
        $user->activation_token = str_random(40);
        $user->save();
        Auth::login($user);
        flash('邮箱验证成功,欢迎回来','success');
        return redirect('/home');
    }
}
View Code

 

1.2.1 带x的提示栏

flash('欢迎回来')->important();

1.2.2 不带x的提示栏

flash('欢迎回来')->success();

 flash('欢迎回来')->overlay();

1.2.3 使用modal

\resources\views\layouts\app.blade.php

<script src="//code.jquery.com/jquery.js"></script>
<script src="//cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script>
    $(function () {
        $('#flash-overlay-modal').modal();
    });
</script>

 

 flash('欢迎回来')->overlay();

 

2 未激活不可登录

\app\Http\Controllers\Auth\LoginController.php

use Illuminate\Http\Request;
    /**
     * 重写登录验证方法
     * activated 必须为1 才能登录
     */
    protected function attemptLogin(Request $request)
    {
        $credentials = array_merge($this->credentials($request),['activated'=>1]);
        return $this->guard()->attempt(
          $credentials, $request->filled('remember')
        );
    }

修改登录提示

\resources\lang\en\auth.php

 'failed' => "账号错误或密码错误或邮箱未验证 These credentials do not match our records.",
    'throttle' => '登录尝试次数太多。请在 :seconds 秒后重试。 Too many login attempts. Please try again in :seconds seconds.',

当activated=0时

3 本地化

3.1 翻译成中文

参考

https://blog.csdn.net/qq_35843527/article/details/88047687

composer require "overtrue/laravel-lang:~3.0"

\config\app.php

//'locale' => 'en',
    'locale' => 'zh-CN',

 

'providers' => [

        //Illuminate\Translation\TranslationServiceProvider::class,
        //TranslationServiceProvider改成TranslationServiceProvider
        Overtrue\LaravelLang\TranslationServiceProvider::class,    
]

\vendor\laravel-lang\lang\json\zh-CN.json

中文翻译都在这个json里

{
  "A fresh verification link has been sent to your email address.": "新的验证链接已发送到您的 E-mail。",
  "All rights reserved.": "版本所有。",
  "Before proceeding, please check your email for a verification link.": "在继续之前请先验证您的 E-mail。",
  "click here to request another": "点击重新发送 E-mail",
  "Confirm Password": "确认密码",
  "E-Mail Address": "E-mail",
  "Error": "错误",
  "Forbidden": "访问被拒绝",
  "Forgot Your Password?": "忘记密码?",
  "Go Home": "回首页",
  "Hello!": "您好:",
  "hi": "嗨",
  "If you did not create an account, no further action is required.": "如果您未注册帐号,请忽略此邮件。",
  "If you did not receive the email": "如果您没有收到",
  "If you did not request a password reset, no further action is required.": "如果您未申请重设密码,请忽略此邮件。",
  "If you’re having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser: [:actionURL](:actionURL)": "如果您点击「:actionText」按钮时出现问题,请复制下方链接到浏览器中开启: [:actionURL](:actionURL)",
  "Login": "登录",
  "Logout": "注销",
  "Name": "姓名",
  "Oh no": "不好了",
  "Page Expired": "页面会话已超时",
  "Page Not Found": "页面不存在",
  "Password": "密码",
  "Please click the button below to verify your email address.": "请点击下面按钮验证您的 E-mail:",
  "Regards": "致敬",
  "Register": "注册",
  "Remember Me": "记住我",
  "Reset Password": "重设密码",
  "Reset Password Notification": "重设密码通知",
  "Send Password Reset Link": "发送重设密码链接",
  "Service Unavailable": "暂时不提供服务",
  "Sorry, you are forbidden from accessing this page.": "很抱歉,你没有权限访问此页面。",
  "Sorry, the page you are looking for could not be found.": "很抱歉!您浏览的页面不存在。",
  "Sorry, you are making too many requests to our servers.": "很抱歉!您向我们的服务器发出太多请求了。",
  "Sorry, you are not authorized to access this page.": "很抱歉!您没有权限浏览此页面。",
  "Sorry, your session has expired. Please refresh and try again.": "很抱歉!您的 Session 已过期,请刷新后再试一次。",
  "Sorry, we are doing some maintenance. Please check back soon.": "很抱歉!我们正在维护网站,请稍候再回来。",
  "Toggle navigation": "切换导航",
  "Too Many Requests": "太多请求",
  "Unauthorized": "未授权",
  "Verify Email Address": "验证 E-mail",
  "Verify Your Email Address": "验证 E-mail",
  "You are receiving this email because we received a password reset request for your account.": "您收到此电子邮件是因为我们收到了您帐户的密码重设请求。",
  "Whoops!": "哎呦!",
  "Whoops, something went wrong on our servers.": "哎呀,我们的服务器出了问题。",
  "This password reset link will expire in :count minutes.": "此密码重置链接将会在:count分钟内失效。"
}

 

3.2 修改时区

\config\app.php

    //'timezone' => 'UTC',
    'timezone' => 'Asia/Shanghai',

 

 4 上传代码

git tag v2.0

https://github.com/guainttt/laravel-zhihu/tags

 

 

 

posted on 2021-06-16 01:13  小白兔晒黑了  阅读(658)  评论(0编辑  收藏  举报