diff --git a/auth.js b/auth.js index 4c23da1..f1b4313 100644 --- a/auth.js +++ b/auth.js @@ -111,12 +111,13 @@ let authUserByCookie = function authUserByCookie(sessionid) { let registerUser = function registerUser(dat) { //dat=[0=>name(名前), 1=>key(招待コード)] //招待制だったらコードを確認 if ( db.dataServer.registration.invite.inviteOnly && db.dataServer.registration.available ) { //招待制かどうか - if ( db.dataServer.registration.invite.inviteCode !== dat[1] ) { //招待コードが一致しているかどうか - console.log("registerUser :: 招待コード違うわ"); + //招待コードが一致しているかどうか + if ( db.dataServer.registration.invite.inviteCode !== dat[1] ) { + console.log("auth :: registerUser : 招待コード違うわ"); return -1; } - console.log("registerUser :: 招待コード合ってる!"); + console.log("auth :: registerUser : 招待コード合ってる!"); } diff --git a/dbControl.js b/dbControl.js index c549a0a..c1f84be 100644 --- a/dbControl.js +++ b/dbControl.js @@ -610,7 +610,7 @@ let getModlog = async function getModlog(dat) { } //サーバーの設定情報を取得 -let getInfoServer = function getServerSettings() { +let getInfoServer = function getInfoServer() { //サーバー情報を構成 let ServerSettings = { servername: dataServer.servername, diff --git a/index.js b/index.js index a0f9fc8..9e34737 100644 --- a/index.js +++ b/index.js @@ -280,7 +280,8 @@ io.on("connection", (socket) => { //サーバー設定の更新 socket.on("changeServerSettings", (dat) => { /* - dat + servername: "xxx", + config: this.displaySettings.config, registration: { available: this.displaySettings.registerAvailable, invite: { @@ -305,8 +306,15 @@ io.on("connection", (socket) => { let serverSettings = db.getInfoServer(dat); serverSettings.serverVersion = SERVER_VERSION; - //現在のサーバー設定を全員に送信 - io.emit("infoServer", serverSettings); + //現在のサーバー設定を更新した人に返す + io.to("loggedin").emit("infoServerFull", serverSettings); + + let serverSettingsEdited = structuredClone(serverSettings); + + //ログイン前の人向けに招待コードと設定を削除して全員に送信 + delete serverSettingsEdited.registration.invite.inviteCode; + delete serverSettingsEdited.config; + io.emit("infoServer", serverSettingsEdited); }); @@ -876,7 +884,7 @@ io.on("connection", (socket) => { //新規登録 socket.on("register", (dat) => { - console.log("register :: 登録しようとしてる"); + console.log("register :: 登録しようとしてる", dat); let key = auth.registerUser(dat); //DBにユーザーを登録、パスワードの取得 //返り値が-1じゃないなら @@ -1216,14 +1224,45 @@ io.on("connection", (socket) => { }); - //サーバー情報の送信 + //サーバー情報の送信(ゲスト、一般ユーザー用) socket.on("getInfoServer", () => { + //サーバー情報格納用 + let serverSettings = {}; + + //あらかじめサーバー情報を取得 + serverSettings = db.getInfoServer(); //情報収集 + serverSettings.serverVersion = SERVER_VERSION; //バージョン情報をつける + + //JSONをいじるため完全にコピー + let serverSettingsEdited = structuredClone(serverSettings); + + //招待コードと設定データを削除 + delete serverSettingsEdited.registration.invite.inviteCode; + + //送信 + socket.emit("infoServer", serverSettingsEdited); + + }); + + //サーバー初期情報の送信(管理者用) + socket.on("getInfoServerFull", (dat) => { + try { + //権限と整合性チェック + if ( + !checkDataIntegrality(dat, [], "getInfoServerFull") && + db.dataServer.user[dat.reqSender.userid].role !== "Admin" + ) { + return -1; + + } + } catch(e) {} + //セッションが適合か確認 serverSettings = db.getInfoServer(); //情報収集 serverSettings.serverVersion = SERVER_VERSION; //バージョン情報をつける //情報送信 - socket.emit("infoServer", serverSettings); + socket.emit("infoServerFull", serverSettings); }); diff --git a/infoUpdate.js b/infoUpdate.js index 76b9e80..5c04514 100644 --- a/infoUpdate.js +++ b/infoUpdate.js @@ -190,8 +190,8 @@ let mod = function mod(dat) { //サーバーの設定を更新 let changeServerSettings = function changeServerSettings(dat) { /* - dat - servername: "aaa", + servername: "xxx", + config: this.displaySettings.config, registration: { available: this.displaySettings.registerAvailable, invite: { @@ -199,9 +199,6 @@ let changeServerSettings = function changeServerSettings(dat) { inviteCode: this.displaySettings.inviteCode } }, - config: { - ... - }, reqSender: { userid: Userinfo.userid, sessionid: Userinfo.sessionid @@ -226,6 +223,8 @@ let changeServerSettings = function changeServerSettings(dat) { //インスタンス設定をマージ db.dataServer.config = {...db.dataServer.config, ...dat.config}; + console.log("infoUpdate :: changeServerSettings : マージ元データ->", dat.registration); + //監査ログへの記録処理 recordModeration( dat.reqSender.userid,