5 changed files with 185 additions and 4 deletions
@ -0,0 +1,175 @@ |
|||||
|
<template> |
||||
|
<md-dialog :md-active.sync="showDiscordWindow" @close="showDiscordWindow=false"> |
||||
|
<div class="md-layout md-alignment-bottom-center"> |
||||
|
<div class="md-layout-item md-size-70 md-small-size-100 md-alignment-bottom-center rounded-only"> |
||||
|
<md-steppers :md-active-step.sync="currentMove" md-linear> |
||||
|
<md-step id="steamAuth" md-label="Steam" :md-done.sync="steamAuth"> |
||||
|
<p>Заранее извиняемся за данную жопу боль, но чтоб предостеречь рейды на сервер дискорда и залет мимоходов, мы сделали авторизацию. Не пройдя ее и зайдя на наш сервер дискорда тебе можно будет лишь читать канал с аннонсами. Так что быстро ты давай пальчик в попу себе вставляй.</p> |
||||
|
<md-button v-if="this.$API.player.success_auth" style="color: #ffffff; font-family: tf2build; background: #000000" v-on:click="moveTo('logout', 'steam')">Выйти из Steam</md-button> |
||||
|
<md-button v-else style="color: #ffffff; font-family: tf2build; background: #000000" v-on:click="moveTo('login', 'steam')">Войти в Steam</md-button> |
||||
|
</md-step> |
||||
|
|
||||
|
<md-step id="discordAuth" md-label="Discord" :md-error="steamAlreadyAttachment" :md-done.sync="discordAuth"> |
||||
|
<div v-if="discord.id!==''"> |
||||
|
<p>У тебя уже есть привязанный аккаунт дискорда с ид: {{discord.id}}!<br> Поэтому зайти к нам на сервер тебе не составляет больших проблем.<br>Конечно ты можешь отвязать свой дискорд от стима если желаешь)</p> |
||||
|
<md-button v-if="discord.id!==''" style="color: #fdfde1; font-family: tf2build; background: #4679e7" v-on:click="openDiscord()">Перейти на сервер</md-button> |
||||
|
<md-button v-if="discord.id!==''" style="color: #fdfde1; font-family: tf2build; background: #ff2828" v-on:click="unregisterDiscord()">Отвязать Discord от Steam</md-button> |
||||
|
</div> |
||||
|
<div v-else> |
||||
|
<div v-if="discord.nickname===''"> |
||||
|
<p>Теперь надо зайти в дискорд, иначе как мы узнаем твои данные?</p> |
||||
|
<md-button style="color: #ffffff; font-family: tf2build; background: #505050" v-on:click="moveTo('login', 'discord')">Войти в Discord</md-button> |
||||
|
</div> |
||||
|
<div v-else> |
||||
|
<p>Вот теперь мы узнали что тебя зовут {{discord.nickname}}, пока привязывать одно к другому, так что давай быстрее иди к следующему шагу</p> |
||||
|
<md-button style="color: #ffffff; font-family: tf2build; background: #505050" v-on:click="moveTo('logout', 'discord')">Выйти из Discord</md-button> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</md-step> |
||||
|
|
||||
|
<md-step id="connectAuth" md-label="Связать аккаунты" :md-done.sync="connectAuth"> |
||||
|
<div v-if="discord.id.length>0"> |
||||
|
<p>Вот теперь ты точно можешь общаться со всеми у нас на сервере дискорда, но если ты вдруг передумал и хочешь отвязать свой дискорд от стима, перейди на второй шаг и нажми на отвязать дискорд.</p> |
||||
|
<md-button v-if="discord.id!==''" style="color: #fdfde1; font-family: tf2build; background: #4679e7" v-on:click="openDiscord()">Открыть Discord</md-button> |
||||
|
</div> |
||||
|
<div v-else> |
||||
|
<p>Поздравляю друг и почти на финешной прямой, осталось лишь их только связать и зайти уже в нашу клоаку!</p> |
||||
|
<p v-if="discord.reg_msg.length > 0">{{discord.reg_msg}}</p> |
||||
|
<md-button style="color: #000000; font-family: tf2build; background: #fd8846" v-on:click="registerDiscord()">Связать аккаунты!</md-button> |
||||
|
</div> |
||||
|
</md-step> |
||||
|
</md-steppers> |
||||
|
</div> |
||||
|
</div> |
||||
|
</md-dialog> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import axios from "axios"; |
||||
|
export default { |
||||
|
name: "DiscordWindow", |
||||
|
data: () => ({ |
||||
|
showDiscordWindow: false, |
||||
|
currentMove: "steamAuth", |
||||
|
steamAuth: false, |
||||
|
discordAuth: false, |
||||
|
connectAuth: false, |
||||
|
steamAlreadyAttachment: '', |
||||
|
discord: { |
||||
|
nickname: "", |
||||
|
id: "", |
||||
|
reg_msg: "" |
||||
|
} |
||||
|
}), |
||||
|
methods: { |
||||
|
setDone (id, index) { |
||||
|
this[id] = true |
||||
|
|
||||
|
this.steamAlreadyAttachment = '' |
||||
|
|
||||
|
if (index) { |
||||
|
this.currentMove = index |
||||
|
} |
||||
|
}, |
||||
|
openDW(){this.getMove();this.showDiscordWindow = true;}, |
||||
|
closeDW(){this.showDiscordWindow = false}, |
||||
|
moveTo(action, service) { |
||||
|
let subdomain = "tf2"; |
||||
|
if (location.host.indexOf("pblr-nyk.pro") !== -1) { |
||||
|
subdomain = location.host.split(".")[0] |
||||
|
} |
||||
|
|
||||
|
if (service === 'steam') { |
||||
|
return window.open(`/api/auth/${action}?subdomain=${subdomain}`, '_self'); |
||||
|
} |
||||
|
return window.open(`/api/auth/${service}/${action}`, '_self'); |
||||
|
}, |
||||
|
getMove(){ |
||||
|
console.log("[DiscordWindow] next stage: steam") |
||||
|
if (this.$API.player.success_auth) { |
||||
|
this.steamAuth = true; |
||||
|
// |
||||
|
console.log("[DiscordWindow] next stage: discord") |
||||
|
if (!this.discordAuth) { |
||||
|
this.currentMove = "discordAuth"; |
||||
|
} else { |
||||
|
console.log("[DiscordWindow] next stage: connect") |
||||
|
this.currentMove = "connectAuth"; |
||||
|
} |
||||
|
// |
||||
|
} else { |
||||
|
this.currentMove = "steamAuth"; |
||||
|
} |
||||
|
console.log("[DiscordWindow]", this.steamAuth, this.discordAuth, this.connectAuth); |
||||
|
console.log("[DiscordWindow]", this.currentMove) |
||||
|
return this.currentMove; |
||||
|
}, |
||||
|
openDiscord(){ |
||||
|
if (this.url !== null) window.open("https://tf2.pblr-nyk.pro/discord", '_blank'); |
||||
|
}, |
||||
|
registerDiscord(){ |
||||
|
axios.post("api/auth/discord").then( |
||||
|
(response) => { |
||||
|
switch (response.status) { |
||||
|
case 201: {this.discord.reg_msg = "Аккаунт привязан!";this.updateDiscordId();this.openDiscord();break;} |
||||
|
} |
||||
|
} |
||||
|
).catch((r) => { |
||||
|
switch (r.response.status) { |
||||
|
case 409: {this.discord.reg_msg = "увы к твоему стиму уже как-то подвязался другой дискорд аккаунт";break;} |
||||
|
case 413: {this.discord.reg_msg = "увы к твоему дискорду уже как-то подвязался другой стим аккаунт, или ты жмешь зачемто второй раз...";break;} |
||||
|
default: {this.discord.reg_msg = "привязка закончилась с неизвестной ошибкой, иди нахуй...";break;} |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
unregisterDiscord() { |
||||
|
axios.delete("api/auth/steam/discord") |
||||
|
.then((response) => { |
||||
|
if (response.status === 200) { |
||||
|
this.discordAuth = true; |
||||
|
this.discord.id = ''; |
||||
|
this.currentMove = "connectAuth"; |
||||
|
} else { |
||||
|
window.reload(); |
||||
|
} |
||||
|
}).catch(()=>{}) |
||||
|
}, |
||||
|
updateDiscordId() { |
||||
|
if (this.$API.player.auth("steam")) { |
||||
|
console.log("[DiscordWindow] found steam cookie"); |
||||
|
axios.get("api/auth/steam/discord").then( |
||||
|
(response) => { |
||||
|
if (response.status === 200) { |
||||
|
this.discordAuth = false; |
||||
|
this.discord.id = response.data; |
||||
|
} else { |
||||
|
this.discordAuth = true; |
||||
|
} |
||||
|
} |
||||
|
).catch(() => {this.discordAuth = true;}) |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.updateDiscordId() |
||||
|
if (this.$API.player.auth("discord")) { |
||||
|
console.log("[DiscordWindow] found discord cookie"); |
||||
|
axios.get("api/auth/discord").then( |
||||
|
(response) => { |
||||
|
if (response.status === 200) { |
||||
|
this.discord.nickname = response.data.username; |
||||
|
} |
||||
|
} |
||||
|
).catch(()=>{}); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style> |
||||
|
.md-steppers { |
||||
|
background-color: #5764f1; |
||||
|
border-radius: 5px; |
||||
|
} |
||||
|
</style> |
Loading…
Reference in new issue