diff --git a/dislocker_auth.py b/dislocker_auth.py index a16ab4d..d9c5585 100644 --- a/dislocker_auth.py +++ b/dislocker_auth.py @@ -45,10 +45,11 @@ class Auth(): cursor = self.db.cursor() cursor.execute("SELECT * FROM pc_list WHERE pc_number = %s AND password_hash = %s", (pc_number, password)) pc_info = cursor.fetchall() - if not pc_info: - return 1 + if pc_info: + return {"result": 0, "about": "ok"} else: - return 0 + return {"result": 1, "about": "unregistered_pc"} + finally: cursor.close() @@ -57,36 +58,91 @@ class Auth(): cursor = self.db.cursor() cursor.execute("UPDATE pc_list SET password_hash = NULL WHERE pc_number = %s", (pc_number,)) self.db.commit() + return {"result": 0, "about": "ok"} + + except Exception as error: + print("パスワードの削除中にエラーが発生しました。\nエラー内容") + print(str(error.__class__.__name__)) + print(str(error.args)) + print(str(error)) + return {"result": 1, "about": "error"} + + finally: + cursor.close() + + def user_register_check(self, **kwargs): + try: + discord_user_id = str(kwargs["discord_user_id"]) + + cursor = self.db.cursor() + + cursor.execute("SELECT * FROM club_member WHERE discord_user_id = %s", (discord_user_id,)) + user_record = cursor.fetchall() + #ユーザーデータが見つかった場合(登録済みの場合) + if user_record: + member_id = user_record[0][0] + name = user_record[0][1] + discord_user_name = user_record[0][2] + return {"result": 0, "about": "exist", "user_info": {"member_id": member_id, "name": name, "discord_user_name": discord_user_name}} + #ユーザーデータがなかったら(未登録の場合) + else: + return {"result": 1, "about": "user_data_not_found"} + + except Exception as error: + print("ユーザーの登録状況を調査中にエラーが発生しました。\nエラー内容") + print(str(error.__class__.__name__)) + print(str(error.args)) + print(str(error)) + return {"result": 1, "about": "error"} + finally: cursor.close() def stop(self, **kwargs): + # bot側のfstopを基に try: - pc_number = int(kwargs["pc_number"]) + pc_number = kwargs["pc_number"] cursor = self.db.cursor() cursor.execute("SELECT * FROM pc_list WHERE pc_number = %s", (pc_number,)) pc_list_record = cursor.fetchall() - if not pc_list_record[0][1] == None: - cursor.execute("UPDATE pc_list SET using_user_id = NULL WHERE pc_number = %s", (pc_number,)) - - if not pc_list_record[0][2] == None: - cursor.execute("UPDATE pc_list SET password_hash = NULL WHERE pc_number = %s", (pc_number,)) - - cursor.execute("SELECT * FROM pc_usage_history WHERE member_id = %s AND pc_number = %s ORDER BY id DESC LIMIT 1", (pc_list_record[0][1], pc_number)) - pc_usage_history_record = cursor.fetchall() - cursor.execute("UPDATE pc_usage_history SET end_use_time = current_timestamp WHERE id = %s", (pc_usage_history_record[0][0],)) - self.db.commit() - result = {"result": "ok"} - + pc_using_member_id = pc_list_record[0][1] + pc_password_hash = pc_list_record[0][2] + if pc_using_member_id == None: + return {"result": 1, "about": "not_used"} else: - result = {"result": "not_used"} + cursor.execute("UPDATE pc_list SET using_member_id = NULL WHERE pc_number = %s", (pc_number,)) + if pc_password_hash == None: + pass + else: + cursor.execute("UPDATE pc_list SET password_hash = NULL WHERE pc_number = %s", (pc_number,)) + cursor.execute("SELECT * FROM pc_usage_history WHERE member_id = %s AND pc_number = %s ORDER BY id DESC LIMIT 1", (pc_using_member_id, pc_number)) + pc_usage_history_record = cursor.fetchall() + pc_usage_history_record_id = pc_usage_history_record[0][0] + keyboard_number = pc_usage_history_record[0][3] + mouse_number = pc_usage_history_record[0][4] + if keyboard_number == None: + pass + else: + # keyboard_listの使用中ユーザーを消す + cursor.execute("UPDATE keyboard_list SET using_member_id = NULL WHERE keyboard_number = %s", (keyboard_number,)) + if mouse_number == None: + pass + else: + # mouse_listの使用中ユーザーを消す + cursor.execute("UPDATE mouse_list SET using_member_id = NULL WHERE keyboard_number = %s", (mouse_number,)) + cursor.execute("UPDATE pc_usage_history SET end_use_time = clock_timestamp(), bot_about = %s WHERE id = %s", (bot_about, pc_usage_history_record_id)) + self.db.commit() + return {"result": 0, "about": "ok"} + + except Exception as error: + print("停止処理中にエラーが発生しました。\nエラー内容") + print(str(error.__class__.__name__)) + print(str(error.args)) + print(str(error)) + return {"result": 1, "about": "error"} - except: - result = {"result": "error"} - finally: cursor.close() - return result @@ -98,8 +154,9 @@ def verify(): pc_number = int(request.json.get('pc_number')) password = request.json.get('password') print(str(pc_number) + "の認証処理を開始...") + pc_auth = auth.check(pc_number, password) - if auth.check(pc_number, password) == 0: + if pc_auth["result"] == 0: auth.delete(pc_number) print(str(pc_number) + "の認証処理は成功しました.") return jsonify({'message': 'ok'}), 200 @@ -112,7 +169,7 @@ def stop(): pc_number = int(request.json.get('pc_number')) print(str(pc_number) + "の使用停止処理を開始...") pc_stop = auth.stop(pc_number=pc_number) - if pc_stop["result"] == "ok": + if pc_stop["result"] == 0: print(str(pc_number) + "の使用停止処理は成功しました.") return jsonify({'message': 'ok'}), 200 else: