LoginController.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Models\User;
  4. use App\Http\Models\UserScoreLog;
  5. use Illuminate\Http\Request;
  6. use Response;
  7. use Redirect;
  8. use Cache;
  9. /**
  10. * 登录控制器
  11. * Class LoginController
  12. * @package App\Http\Controllers
  13. */
  14. class LoginController extends BaseController
  15. {
  16. protected static $config;
  17. function __construct()
  18. {
  19. self::$config = $this->systemConfig();
  20. }
  21. // 登录页
  22. public function index(Request $request)
  23. {
  24. if ($request->method() == 'POST') {
  25. $username = trim($request->get('username'));
  26. $password = trim($request->get('password'));
  27. if (empty($username) || empty($password)) {
  28. $request->session()->flash('errorMsg', '请输入用户名和密码');
  29. return Redirect::back();
  30. }
  31. $user = User::where('username', $username)->where('password', md5($password))->first();
  32. if (!$user) {
  33. $request->session()->flash('errorMsg', '用户名或密码错误');
  34. return Redirect::back()->withInput();
  35. } else if ($user->status < 0) {
  36. $request->session()->flash('errorMsg', '账号已禁用');
  37. return Redirect::back();
  38. } else if ($user->status == 0 && self::$config['is_active_register'] && $user->is_admin == 0) {
  39. $request->session()->flash('errorMsg', '账号未激活,请先<a href="/activeUser?username=' . $user->username . '" target="_blank">【激活账号】</a>');
  40. return Redirect::back()->withInput();
  41. }
  42. // 更新登录信息
  43. User::where('id', $user['id'])->update(['last_login' => time()]);
  44. // 登录送积分
  45. if (static::$config['login_add_score']) {
  46. if (!Cache::has('loginAddScore_' . md5($username))) {
  47. $score = mt_rand(static::$config['min_rand_score'], static::$config['max_rand_score']);
  48. $ret = User::where('id', $user['id'])->increment('score', $score);
  49. if ($ret) {
  50. $obj = new UserScoreLog();
  51. $obj->user_id = $user['id'];
  52. $obj->before = $user['score'];
  53. $obj->after = $user['score'] + $score;
  54. $obj->score = $score;
  55. $obj->desc = '登录送积分';
  56. $obj->created_at = date('Y-m-d H:i:s');
  57. $obj->save();
  58. $ttl = !empty(static::$config['login_add_score_range']) ? static::$config['login_add_score_range'] : 1440;
  59. Cache::put('loginAddScore_' . md5($username), '1', $ttl);
  60. $request->session()->flash('successMsg', '欢迎回来,系统自动赠送您 ' . $score . ' 积分,您可以用它兑换流量包');
  61. }
  62. }
  63. }
  64. // 重新取出用户信息
  65. $user = User::where('id', $user['id'])->first();
  66. $request->session()->put('user', $user->toArray());
  67. // 根据权限跳转
  68. if ($user['is_admin']) {
  69. return Redirect::to('admin');
  70. }
  71. return Redirect::to('user');
  72. } else {
  73. return Response::view('login');
  74. }
  75. }
  76. // 退出
  77. public function logout(Request $request)
  78. {
  79. $request->session()->flush();
  80. return Redirect::to('login');
  81. }
  82. }