diff options
author | marvin-borner@live.com | 2018-05-12 12:44:04 +0200 |
---|---|---|
committer | marvin-borner@live.com | 2018-05-12 12:44:04 +0200 |
commit | d70be1a7a2b94cf1f30f6f4193a27eabcc84fe54 (patch) | |
tree | db30654b695f5b6dd00fa296d0e9e1770e37bfe6 /main/app/sprinkles/core/assets | |
parent | 16014c5bbd25afbb445784c17646607c53cfe56b (diff) | |
parent | 1f05a05eec9fc88aca7d3e4e7d9e891ae31ba4eb (diff) |
Merge branch 'master' of github.com:marvinborner/SocialNetwork
Diffstat (limited to 'main/app/sprinkles/core/assets')
5 files changed, 240 insertions, 107 deletions
diff --git a/main/app/sprinkles/core/assets/SiteAssets/css/main.css b/main/app/sprinkles/core/assets/SiteAssets/css/main.css index 999bdaa..42e0af8 100644 --- a/main/app/sprinkles/core/assets/SiteAssets/css/main.css +++ b/main/app/sprinkles/core/assets/SiteAssets/css/main.css @@ -76,7 +76,6 @@ SWIPEABLE HEADER ******/ .header { - -js-display: flex; display: flex; flex-wrap: nowrap; justify-content: space-between; @@ -194,6 +193,7 @@ hr.ChatHeaderDivider { .ChatMessages { overflow-y: scroll; + overflow-x: hidden; max-height: calc(100% - 215px); /* navbar + input + some margin*/ max-height: -moz-calc(100% - 215px); max-height: -webkit-calc(100% - 215px); @@ -323,18 +323,23 @@ hr.ChatHeaderDivider { } @-webkit-keyframes sk-bouncedelay { - 0%, 80%, 100% { -webkit-transform: scale(0) } - 40% { -webkit-transform: scale(1.0) } + 0%, 80%, 100% { + -webkit-transform: scale(0) + } + 40% { + -webkit-transform: scale(1.0) + } } @keyframes sk-bouncedelay { 0%, 80%, 100% { -webkit-transform: scale(0); transform: scale(0); - } 40% { - -webkit-transform: scale(1.0); - transform: scale(1.0); - } + } + 40% { + -webkit-transform: scale(1.0); + transform: scale(1.0); + } } /********* @@ -371,7 +376,6 @@ FRIEND TAB align-self: center; } - /*********** PERSONAL TAB ***********/ @@ -382,7 +386,6 @@ PERSONAL TAB } .PersonalOverviewHeader { - -js-display: flex; display: flex; justify-content: space-evenly; align-items: flex-end; @@ -421,7 +424,6 @@ PERSONAL TAB NAVBAR *****/ .Navbar { - -js-display: flex; display: flex; flex-wrap: nowrap; justify-content: center; @@ -434,10 +436,18 @@ NAVBAR } .NavbarIconWrap { + width: calc(100vw / 5); + width: -moz-calc(100vw / 5); + width: -webkit-calc(100vw / 5); +} + +.NavbarIconWrap { margin: auto; } .NavbarIconWrap img { + display: block; + margin: 0 auto; height: 30px; width: 30px; } diff --git a/main/app/sprinkles/core/assets/SiteAssets/js/chat.js b/main/app/sprinkles/core/assets/SiteAssets/js/chat.js index d9de95f..76e34db 100644 --- a/main/app/sprinkles/core/assets/SiteAssets/js/chat.js +++ b/main/app/sprinkles/core/assets/SiteAssets/js/chat.js @@ -1,4 +1,21 @@ /** + * ENCRYPTION + */ +var ReceiversUsername = ""; // HARD +var openpgp = window.openpgp; +var options, EncryptedMessage, DecryptedMessage; +var PublicKey = []; +openpgp.initWorker({path: '/assets-raw/core/assets/SiteAssets/js/openpgp.worker.js'}); +var privKeyObj = openpgp.key.readArmored(localStorage.getItem("PrivateKey").replace(/\r/, "")).keys[0]; +privKeyObj.decrypt(localStorage.getItem("🔒")); + +/** + * GLOBAL DECLARATIONS + */ +var LastMessage, Username; + + +/** * GENERAL CHAT */ function InitializeChatServer() { @@ -18,16 +35,20 @@ function InitializeChatServer() { // CONNECTION SUCCESSFUL! console.log("%c[CHATSOCKET LOGGER] Chat connection established!", "color: darkorange"); // START VERIFICATION - ChatSocket.send(JSON.stringify({ClientMessageType: "Verify", Cookie: document.cookie, UserID: current_user_id})); + ChatSocket.send(JSON.stringify({ + ClientMessageType: "Verify", + Cookie: document.cookie, + UserID: current_user_id + })); console.log("%c[CHATSOCKET LOGGER] Started chat verification process...", "color: grey"); // GOT MESSAGE ChatSocket.onmessage = function (e) { // DECLARATIONS var TypingIndicatorMessage = $(".TypingIndicatorMessage").parent(); - var LastMessage = $(".MessageWrapper.Normal:last .ChatMessage"); + LastMessage = $(".MessageWrapper.Normal:last .ChatMessage"); var MessageObject = JSON.parse(e.data); - var Message = MessageObject.Message; - var Username = MessageObject.Username; + var Message = MessageObject.Message; // ENCRYPTED MESSAGE (NOT ENCRYPTED ON SERVER MESSAGES) + Username = MessageObject.Username; var Fullname = MessageObject.Fullname; var Avatar = MessageObject.Avatar; var GroupName = MessageObject.GroupName; @@ -36,49 +57,62 @@ function InitializeChatServer() { var WasHimself = MessageObject.WasHimself; var ServerMessageType = MessageObject.ServerMessageType; var Granted = MessageObject.Granted; + ReceiversUsername = MessageObject.Receiver; - if (ServerMessage === false) { // NO SERVER MESSAGE -> SENT BY USER - if (WasHimself === true) { // -> MESSAGE WAS FROM HIMSELF - console.log("%c[CHATSOCKET LOGGER] You sent a message!", "color: darkorange"); - if (!LastMessage.hasClass("MessageSent")) { // CHECK IF PREVIOUS MESSAGE WAS FROM HIMSELF TOO -> IF NOT, CREATE NEW 'ALONE' MESSAGE - ChatMessages.append("<div class='MessageWrapper Normal'><div class='ChatMessage MessageSent AloneMessage animated fadeInRight'>" + Message + "</div></div>"); - } else if (LastMessage.hasClass("MessageSent")) { // IF PREVIOUS MESSAGE WAS FROM HIMSELF TOO -> CREATE WITH CORRESPONDING CLASSES FOR DESIGN - ChatMessages.append("<div class='MessageWrapper Normal'><div class='ChatMessage MessageSent BottomMessage animated fadeInRight'>" + Message + "</div></div>"); - if (LastMessage.hasClass("AloneMessage")) { - LastMessage.removeClass("AloneMessage"); - LastMessage.addClass("TopMessage"); - } else if (LastMessage.hasClass("BottomMessage")) { - LastMessage.removeClass("BottomMessage"); - LastMessage.addClass("MiddleMessage"); - } + // GET PUBLIC KEY IF NOT ALREADY DID + if (!(ReceiversUsername in PublicKey) && ReceiversUsername !== null && ReceiversUsername !== undefined) { + $.ajax({ + type: 'GET', + url: site.uri.public + '/api/users/u/' + ReceiversUsername + '/publickey', + dataType: "json", + success: function (response) { + PublicKey[ReceiversUsername] = response.PublicKey; + console.log("%c[ENCRYPTION LOGGER] Publickey of " + ReceiversUsername + ": " + PublicKey[ReceiversUsername].substr(96).slice(0, -35), "color: #20c20e; background-color: black;") } - } else if (WasHimself === false) { // -> MESSAGE WAS FROM OTHER USER - console.log("%c[CHATSOCKET LOGGER] You received a message!", "color: darkorange"); - NotifySound.play(); - Push.create(Fullname, { // CREATE NOTIFICATION - body: Message, - icon: Avatar, - timeout: 5000, - onClick: function () { - window.focus(); - this.close(); - } - }); - if (!LastMessage.hasClass("MessageReceived")) { // CHECK IF PREVIOUS MESSAGE WAS FROM OTHER USER TOO -> IF NOT, CREATE NEW 'ALONE' MESSAGE - ChatMessages.append("<div class='MessageWrapper Normal'><div class='ChatMessage MessageReceived AloneMessage animated fadeInLeft'>" + Message + "</div></div>"); - } else if (LastMessage.hasClass("MessageReceived")) { // IF PREVIOUS MESSAGE WAS FROM OTHER USER TOO -> CREATE WITH CORRESPONDING CLASSES FOR DESIGN - ChatMessages.append("<div class='MessageWrapper Normal'><div class='ChatMessage MessageReceived BottomMessage animated fadeInLeft'>" + Message + "</div></div>"); - if (LastMessage.hasClass("AloneMessage")) { - LastMessage.removeClass("AloneMessage"); - LastMessage.addClass("TopMessage"); - } else if (LastMessage.hasClass("BottomMessage")) { - LastMessage.removeClass("BottomMessage"); - LastMessage.addClass("MiddleMessage"); + }); + } + + if (ServerMessage === false) { // NO SERVER MESSAGE -> SENT BY USER + + // DECRYPT MESSAGE + options = { + message: openpgp.message.readArmored("-----BEGIN PGP MESSAGE-----\r\nVersion: OpenPGP.js v3.0.9\r\nComment: https://openpgpjs.org\r\n\r\n" + Message + "\r\n\-----END PGP MESSAGE-----\r\n"), + publicKeys: openpgp.key.readArmored(PublicKey[Username]).keys, // FOR VERIFICATION + privateKeys: [privKeyObj] + }; + openpgp.decrypt(options).then(function(plaintext) { + DecryptedMessage = plaintext.data; + if (WasHimself === true) { // -> MESSAGE WAS FROM HIMSELF -> Don't write to chat, as its done directly (on enter function at the bottom, for performance) + console.log("%c[CHATSOCKET LOGGER] Message sending succeeded!", "color: darkorange"); + } else if (WasHimself === false) { // -> MESSAGE WAS FROM OTHER USER + console.log("%c[CHATSOCKET LOGGER] You received a message!", "color: darkorange"); + NotifySound.play(); + Push.create(Fullname, { // CREATE NOTIFICATION + body: DecryptedMessage, + icon: Avatar, + timeout: 5000, + onClick: function () { + window.focus(); + this.close(); + } + }); + if (!LastMessage.hasClass("MessageReceived")) { // CHECK IF PREVIOUS MESSAGE WAS FROM OTHER USER TOO -> IF NOT, CREATE NEW 'ALONE' MESSAGE + ChatMessages.append("<div class='MessageWrapper Normal'><div class='ChatMessage MessageReceived AloneMessage animated fadeInLeft'>" + DecryptedMessage + "</div></div>"); + } else if (LastMessage.hasClass("MessageReceived")) { // IF PREVIOUS MESSAGE WAS FROM OTHER USER TOO -> CREATE WITH CORRESPONDING CLASSES FOR DESIGN + ChatMessages.append("<div class='MessageWrapper Normal'><div class='ChatMessage MessageReceived BottomMessage animated fadeInLeft'>" + DecryptedMessage + "</div></div>"); + if (LastMessage.hasClass("AloneMessage")) { + LastMessage.removeClass("AloneMessage"); + LastMessage.addClass("TopMessage"); + } else if (LastMessage.hasClass("BottomMessage")) { + LastMessage.removeClass("BottomMessage"); + LastMessage.addClass("MiddleMessage"); + } } } - } + }); + // CONVERT LINKS TO LINKS - $('.MessageReceived').linkify({ + $('.ChatMessage').linkify({ target: "_blank" }); } else if (ServerMessage === true) { // SERVER MESSAGE @@ -115,15 +149,17 @@ function InitializeChatServer() { } } } else if (ServerMessageType === "Verify") { // TYPE: SERVER CHECKED ACCESS -- MOSTLY HANDLED IN BACKEND - if (Granted === true) { - console.log("%c[CHATSOCKET LOGGER] Chat access granted!", "color: green"); - } else if (Granted === false) { - console.log("%c[CHATSOCKET LOGGER] Chat access denied!", "color: red"); - } + if (Granted === true) { + console.log("%c[CHATSOCKET LOGGER] Chat access granted!", "color: green"); + } else if (Granted === false) { + console.log("%c[CHATSOCKET LOGGER] Chat access denied!", "color: red"); + } } } // SCROLL TO BOTTOM ON NEW MESSAGE OF ANY KIND - ChatMessages.animate({scrollTop: document.querySelector("#ChatMessages").scrollHeight}, "slow"); + if ((ChatMessages.scrollTop() + ChatMessages.innerHeight() < ChatMessages[0].scrollHeight)) { + ChatMessages.animate({scrollTop: document.querySelector("#ChatMessages").scrollHeight}); + } }; @@ -181,14 +217,65 @@ function InitializeChatServer() { // SEND MESSAGE FROM INPUT FIELD ChatTextInput.keyup(function (e) { if (e.keyCode === 13 && ChatTextInput.val().length > 0) { + + var LastMessage = $(".MessageWrapper.Normal:last .ChatMessage"); + if (!LastMessage.hasClass("MessageSent")) { // CHECK IF PREVIOUS MESSAGE WAS FROM HIMSELF TOO -> IF NOT, CREATE NEW 'ALONE' MESSAGE + ChatMessages.append("<div class='MessageWrapper Normal'><div class='ChatMessage MessageSent AloneMessage animated fadeInRight'>" + ChatTextInput.val() + "</div></div>"); + } else if (LastMessage.hasClass("MessageSent")) { // IF PREVIOUS MESSAGE WAS FROM HIMSELF TOO -> CREATE WITH CORRESPONDING CLASSES FOR DESIGN + ChatMessages.append("<div class='MessageWrapper Normal'><div class='ChatMessage MessageSent BottomMessage animated fadeInRight'>" + ChatTextInput.val() + "</div></div>"); + if (LastMessage.hasClass("AloneMessage")) { + LastMessage.removeClass("AloneMessage"); + LastMessage.addClass("TopMessage"); + } else if (LastMessage.hasClass("BottomMessage")) { + LastMessage.removeClass("BottomMessage"); + LastMessage.addClass("MiddleMessage"); + } + } + // USER USUALLY STOPS TYPING ON SENDING -> CHANGE STATE TO FALSE sendTypingState(false); isTyping = false; clearTimeout(typingTimer); - ChatSocket.send(JSON.stringify({ClientMessageType: "ChatMessage", MessageType: "Private", Message: ChatTextInput.val()})); - ChatTextInput.val(""); - ChatTextInput.val(""); + // ENCRYPT AND SEND MESSAGE WITH OWN PUBLIC KEY + options = { + data: ChatTextInput.val(), + publicKeys: openpgp.key.readArmored(PublicKey[ReceiversUsername]).keys, + privateKeys: [privKeyObj] // FOR SIGNING + }; + openpgp.encrypt(options).then(function (Encrypted) { + EncryptedMessage = Encrypted.data.substr(91).slice(0,-29); // SLICING FOR DATABASE SAVING (LESS DATA) + console.log("%c[ENCRYPTION LOGGER] Encrypted message for sender: " + EncryptedMessage, "color: #20c20e; background-color: black;"); + + ChatSocket.send(JSON.stringify({ + ClientMessageType: "ChatMessage", + MessageType: "Private", + EncryptedWithKey: ReceiversUsername, + Message: EncryptedMessage + })); + ChatTextInput.val(""); + ChatTextInput.val(""); + }); + + // ENCRYPT AND SEND MESSAGE WITH RECEIVERS PUBLIC KEY + options = { + data: ChatTextInput.val(), + publicKeys: openpgp.key.readArmored(PublicKey[ReceiversUsername]).keys, + privateKeys: [privKeyObj] // FOR SIGNING + }; + openpgp.encrypt(options).then(function (Encrypted) { + EncryptedMessage = Encrypted.data.substr(91).slice(0,-29); // SLICING FOR DATABASE SAVING (LESS DATA) + console.log("%c[ENCRYPTION LOGGER] Encrypted message for receiver: " + EncryptedMessage, "color: #20c20e; background-color: black;"); + + ChatSocket.send(JSON.stringify({ + ClientMessageType: "ChatMessage", + MessageType: "Private", + EncryptedWithKey: ReceiversUsername, + Message: EncryptedMessage + })); + ChatTextInput.val(""); + ChatTextInput.val(""); + }); } }); }; diff --git a/main/app/sprinkles/core/assets/SiteAssets/js/main.js b/main/app/sprinkles/core/assets/SiteAssets/js/main.js index 7dd6006..08d5888 100644 --- a/main/app/sprinkles/core/assets/SiteAssets/js/main.js +++ b/main/app/sprinkles/core/assets/SiteAssets/js/main.js @@ -12,8 +12,8 @@ var ExploreData = $("#ExploreData"); * CACHE IMAGES * @type {*|jQueryImageCaching|jQuery} */ -var cachedNavbarIcons = $(".NavbarIconWrap img").imageCaching(); -var cashedAvatarIcons = $("img.Avatar").imageCaching(); +//var cachedNavbarIcons = $(".NavbarIconWrap img").imageCaching(); +//var cashedAvatarIcons = $("img.Avatar").imageCaching(); /** * POPUPS @@ -32,31 +32,59 @@ function triggerErrorPopup() { /** * ENCRYPTION */ -//encrypt -var openpgp = window.openpgp; +/*var openpgp = window.openpgp; +var options, EncryptedText, DecryptedText, PrivateKey, PassPhrase, PrivateKeyObj; +var PublicKey = []; openpgp.initWorker({path: '/assets-raw/core/assets/SiteAssets/js/openpgp.worker.js'}); -var options, encrypted; -options = { - data: "LOL", - passwords: ['password'], - armor: false -}; -openpgp.encrypt(options).then(function (ciphertext) { - encrypted = ciphertext.message.packets.write(); + +$.ajax({ + type: 'GET', + url: site.uri.public + '/api/users/u/' + current_username + '/publickey', + dataType : "json", + success: function (response) { + if (response.user_id === current_user_id) { + PublicKey[current_username] = response.PublicKey; + PrivateKey = localStorage.getItem("PrivateKey"); + PassPhrase = localStorage.getItem("🔒") + } + } }); -// decrypt -function decrypt() { +function EncryptMessage(Message, Username) { + if (!Username in PublicKey) { + $.ajax({ + type: 'GET', + url: site.uri.public + '/api/users/u/' + Username + '/publickey', + dataType : "json", + success: function (response) { + if (response.user_id === current_user_id) { + PublicKey[Username] = response.PublicKey; + } + } + }); + } options = { - message: openpgp.message.read(encrypted), - passwords: ['passwort'] - //format: 'binary' + data: Message, + publicKeys: openpgp.key.readArmored(PublicKey[Username]).keys }; - openpgp.decrypt(options).then(function (plaintext) { - console.log(plaintext.data) - }) + openpgp.encrypt(options).then(function (EncryptedText) { + EncryptedText = EncryptedText.data; + }); } +function DecryptMessage(EncryptedText) { + PrivateKeyObj = openpgp.key.readArmored(PrivateKey).keys[0]; + PrivateKeyObj.decrypt(PassPhrase); + options = { + message: openpgp.message.readArmored(EncryptedText), + privateKeys: [PrivateKeyObj] + }; + + openpgp.decrypt(options).then(function (DecryptedText) { + DecryptedText = DecryptedText.data; + }); +}*/ + /** * OLD BROWSER * @type {boolean} @@ -111,10 +139,13 @@ MainTabWindows.slick({ MainTabWindows.on('beforeChange', function (event, slick, currentSlide, nextSlide) { currentSlide = $("#" + currentSlide); nextSlide = $("#" + nextSlide); - currentSlide.children().attr("data-src", (currentSlide.children().attr("data-src").split('.svg')[0].replace('Activated', '') + ".svg")); - nextSlide.children().attr("data-caching-key", nextSlide.children().attr("data-src").split('.svg')[0].split('/').pop() + "Activated_nav_cached"); - nextSlide.children().attr("data-src", nextSlide.children().attr("data-src").split('.svg')[0] + "Activated.svg"); - cachedNavbarIcons.refresh(); + + currentSlide.children().attr("src", (currentSlide.children().attr("src").split('.svg')[0].replace('Activated', '') + ".svg")); + nextSlide.children().attr("src", nextSlide.children().attr("src").split('.svg')[0] + "Activated.svg"); + //currentSlide.children().attr("data-src", (currentSlide.children().attr("data-src").split('.svg')[0].replace('Activated', '') + ".svg")); + //nextSlide.children().attr("data-caching-key", nextSlide.children().attr("data-src").split('.svg')[0].split('/').pop() + "Activated_nav_cached"); + //nextSlide.children().attr("data-src", nextSlide.children().attr("data-src").split('.svg')[0] + "Activated.svg"); + //cachedNavbarIcons.refresh(); $el = nextSlide; $el.addClass("ActiveTab"); leftPos = $el.position().left; @@ -131,24 +162,24 @@ UserSearchBar.keyup(function () { SearchResults.empty(); var RequestedUser = UserSearchBar.val(); if (RequestedUser !== " " && RequestedUser !== "") - $.ajax({ - url: site.uri.public + "/api/users/u/" + RequestedUser, - success: function (answer) { - console.log("%c[SEARCH LOGGER] User " + RequestedUser + " was found!", "color: green"); - //var GifUrls = ["https://media.giphy.com/media/xUPGcg01dIAot4zyZG/giphy.gif", "https://media.giphy.com/media/IS9LfP9oSLdcY/giphy.gif", "https://media.giphy.com/media/5wWf7H0WTquIU1DFY4g/giphy.gif"]; - //var RandomGif = Math.floor((Math.random() * GifUrls.length)); - //var RandomGifUrl = GifUrls[RandomGif]; - //console.image(RandomGifUrl, 0.5); - - alerts.ufAlerts().ufAlerts('fetch'); - - SearchResults.append("<img class='Avatar' data-src='" + answer.avatar + "' data-caching-key='" + answer.user_name + "_avatar_cached'/><div class='UsersFullName'>" + answer.full_name + "</div>"); - $(".SearchResults .Avatar").imageCaching(); // refresh - }, - error: function () { - console.log("%c[SEARCH LOGGER] User " + RequestedUser + " was not found!", "color: red"); - - alerts.ufAlerts().ufAlerts('fetch'); - } - }); + $.ajax({ + url: site.uri.public + "/api/users/u/" + RequestedUser, + success: function (answer) { + console.log("%c[SEARCH LOGGER] User " + RequestedUser + " was found!", "color: green"); + //var GifUrls = ["https://media.giphy.com/media/xUPGcg01dIAot4zyZG/giphy.gif", "https://media.giphy.com/media/IS9LfP9oSLdcY/giphy.gif", "https://media.giphy.com/media/5wWf7H0WTquIU1DFY4g/giphy.gif"]; + //var RandomGif = Math.floor((Math.random() * GifUrls.length)); + //var RandomGifUrl = GifUrls[RandomGif]; + //console.image(RandomGifUrl, 0.5); + + alerts.ufAlerts().ufAlerts('fetch'); + + SearchResults.append("<img class='Avatar' data-src='" + answer.avatar + "' data-caching-key='" + answer.user_name + "_avatar_cached'/><div class='UsersFullName'>" + answer.full_name + "</div>"); + //$(".SearchResults .Avatar").imageCaching(); // refresh + }, + error: function () { + console.log("%c[SEARCH LOGGER] User " + RequestedUser + " was not found!", "color: red"); + + alerts.ufAlerts().ufAlerts('fetch'); + } + }); });
\ No newline at end of file diff --git a/main/app/sprinkles/core/assets/SiteAssets/js/push.js b/main/app/sprinkles/core/assets/SiteAssets/js/push.js index fcb350a..49a4467 100644 --- a/main/app/sprinkles/core/assets/SiteAssets/js/push.js +++ b/main/app/sprinkles/core/assets/SiteAssets/js/push.js @@ -709,5 +709,4 @@ e.exports = new i.default("undefined" != typeof window ? window : void 0) }, {"./classes/Push": 3}] }, {}, [11])(11) -}); -//# sourceMappingURL=push.min.js.map
\ No newline at end of file +});
\ No newline at end of file diff --git a/main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php b/main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php index e4f7f30..1553468 100644 --- a/main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php +++ b/main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php @@ -51,6 +51,7 @@ class ChatProcessor implements MessageComponentInterface $MessageObject->ServerMessage = TRUE; $MessageObject->ServerMessageType = "Verify"; $MessageObject->Granted = TRUE; + $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name; $this->verifiedUsers[$conn->resourceId] = TRUE; $this->users[$conn->resourceId]->send(json_encode($MessageObject, TRUE)); } else { @@ -58,6 +59,7 @@ class ChatProcessor implements MessageComponentInterface $MessageObject->ServerMessage = TRUE; $MessageObject->ServerMessageType = "Verify"; $MessageObject->Granted = FALSE; + $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name; $this->verifiedUsers[$conn->resourceId] = FALSE; $this->users[$conn->resourceId]->send(json_encode($MessageObject, TRUE)); $this->onClose($conn); @@ -67,6 +69,7 @@ class ChatProcessor implements MessageComponentInterface $MessageObject->ServerMessage = TRUE; $MessageObject->ServerMessageType = "Verify"; $MessageObject->Granted = FALSE; + $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name; $this->verifiedUsers[$conn->resourceId] = FALSE; $this->users[$conn->resourceId]->send(json_encode($MessageObject, TRUE)); $this->onClose($conn); @@ -84,6 +87,7 @@ class ChatProcessor implements MessageComponentInterface $MessageObject->ServerMessage = TRUE; $MessageObject->ServerMessageType = "GroupJoin"; $MessageObject->GroupName = $channel; + $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name; $MessageObject->Username = $this->userInfo[$conn->resourceId]->user_name; $MessageObject->Fullname = $this->userInfo[$conn->resourceId]->first_name . " " . $this->userInfo[$conn->resourceId]->last_name; $MessageObject->Avatar = $this->userInfo[$conn->resourceId]->avatar; @@ -105,6 +109,7 @@ class ChatProcessor implements MessageComponentInterface $MessageObject = new \stdClass(); $MessageObject->ServerMessage = FALSE; $MessageObject->GroupName = $channel; + $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$target]]->user_name; $MessageObject->Username = $this->userInfo[$conn->resourceId]->user_name; $MessageObject->Fullname = $this->userInfo[$conn->resourceId]->first_name . " " . $this->userInfo[$conn->resourceId]->last_name; $MessageObject->Avatar = $this->userInfo[$conn->resourceId]->avatar; @@ -136,6 +141,7 @@ class ChatProcessor implements MessageComponentInterface $MessageObject->ServerMessage = TRUE; $MessageObject->ServerMessageType = "TypingState"; $MessageObject->GroupName = $channel; + $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name; $MessageObject->Username = $this->userInfo[$conn->resourceId]->user_name; $MessageObject->Fullname = $this->userInfo[$conn->resourceId]->first_name . " " . $this->userInfo[$conn->resourceId]->last_name; $MessageObject->Avatar = $this->userInfo[$conn->resourceId]->avatar; |