You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
176 lines
8.1 KiB
176 lines
8.1 KiB
<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" style="background-color: #5788f1;">
|
|
<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" class="btn-colored" v-on:click="moveTo('logout', 'steam')">Выйти из Steam</md-button>
|
|
<md-button v-else class="btn-colored" 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!==''" class="btn-old" v-on:click="openDiscord()">Перейти на сервер</md-button>
|
|
<md-button v-if="discord.id!==''" class="btn-collect" v-on:click="unregisterDiscord()">Отвязать Discord от Steam</md-button>
|
|
</div>
|
|
<div v-else>
|
|
<div v-if="discord.nickname===''">
|
|
<p>Теперь надо зайти в дискорд, иначе как мы узнаем твои данные?</p>
|
|
<md-button class="btn-default" v-on:click="moveTo('login', 'discord')">Войти в Discord</md-button>
|
|
</div>
|
|
<div v-else>
|
|
<p>Вот теперь мы узнали что тебя зовут {{discord.nickname}}, пока привязывать одно к другому, так что давай быстрее иди к следующему шагу</p>
|
|
<md-button class="btn-default" 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!==''" class="btn-old" 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 class="btn-old" v-on:click="registerDiscord()">Связать аккаунты!</md-button>
|
|
</div>
|
|
</md-step>
|
|
</md-steppers>
|
|
<md-button class="btn-colored" v-on:click="closeDW()">Я передумал</md-button>
|
|
</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>
|