MWSE/Source/Services/Auth.js

166 lines
4.4 KiB
JavaScript

const { Client } = require("../Client.js");
let {addService, addListener} = require("../WebSocket.js");
addService(({
client,
message,
end,
next
})=>{
let {type,username,password,to,value} = message;
switch(type)
{
case "auth/pair-system":{
if(value == 'everybody')
{
client.requiredPair = true;
end({status:"success"});
}
if(value == 'disable')
{
client.requiredPair = false;
end({status:"success"});
}
break;
}
case "my/socketid":{
end(client.id);
break;
}
case 'auth/public':{
client.requiredPair = false;
return end({
value: 'success',
mode: 'public'
})
}
case 'auth/private':{
client.requiredPair = true;
return end({
value: 'success',
mode: 'private'
})
}
case 'request/pair':{
if(Client.clients.has(to)){
return end({
status: 'fail',
message: 'CLIENT-NOT-FOUND'
})
};
let pairclient = Client.clients.get(to);
if(pairclient.pairs.has(client.id))
{
return end({
status: 'success',
message: 'ALREADY-PAIRED'
})
}
if(client.pairs.add(to))
{
return end({
status: 'fail',
message: 'ALREADY-REQUESTED'
})
};
end({
status: 'success',
message: 'REQUESTED'
})
client.peerRequest(pairclient);
break;
}
case 'accept/pair':{
if(Client.clients.has(to)){
return end({
status: 'fail',
message: 'CLIENT-NOT-FOUND'
})
};
let pairclient = Client.clients.get(to);
if(pairclient.pairs.has(client.id))
{
return end({
status: 'success',
message: 'ALREADY-PAIRED'
})
}
if(!client.pairs.has(to))
{
return end({
status: 'fail',
message: 'NOT-REQUESTED-PAIR'
})
}
client.acceptPeerRequest(pairclient);
break;
}
case 'reject/pair':{
if(Client.clients.has(to)){
return end({
status: 'fail',
message: 'CLIENT-NOT-FOUND'
})
};
let pairclient = Client.clients.get(to);
if(pairclient.pairs.has(client.id))
{
return end({
status: 'success',
message: 'ALREADY-PAIRED'
})
}
if(!client.pairs.has(to))
{
return end({
status: 'fail',
message: 'NOT-REQUESTED-PAIR'
})
}
client.rejectPeerRequest(pairclient);
break;
}
case 'pair/list':{
end({
type:'pair/list',
value: pairList
})
break;
}
case 'auth/check':{
let auth = client.store.has('user');
return end({
value: auth
})
}
case 'auth/login':{
if(username == '*' && password == '*')
{
return end({
status: 'success'
})
}else{
return end({
status: 'fail'
})
}
}
case 'auth/logout':{
let auth = client.store.has('user');
if(auth)
{
client.store.delete('user');
return end({
status: 'success'
})
}else{
return end({
status: 'fail'
})
}
}
default:{
next();
}
}
});