forked from adam/discord-bot-shtik
admin interface works
All checks were successful
gitea.arg.rip/vassago/pipeline/head This commit looks good
All checks were successful
gitea.arg.rip/vassago/pipeline/head This commit looks good
This commit is contained in:
parent
e85a61607e
commit
631347aed8
@ -123,4 +123,91 @@ public class UACController: ControllerBase
|
||||
Rememberer.RememberUAC(uacFromDb);
|
||||
return Ok(uacFromDb);
|
||||
}
|
||||
[HttpPatch]
|
||||
[Route("UnlinkUser")]
|
||||
[Produces("application/json")]
|
||||
public IActionResult UnlinkUser([FromBody] extraSpecialObjectReadGlorifiedTupleFor_LinkUser req)
|
||||
{
|
||||
var uac_guid = req.uac_guid;
|
||||
var user_guid = req.user_guid;
|
||||
var uacFromDb = Rememberer.SearchUAC(uac => uac.Id == uac_guid);
|
||||
if (uacFromDb == null)
|
||||
{
|
||||
_logger.LogError($"attempt to unlink uac for uac {uac_guid}, not found");
|
||||
return NotFound();
|
||||
}
|
||||
var userFromDb = Rememberer.SearchUser(c => c.Id == user_guid);
|
||||
if (userFromDb == null)
|
||||
{
|
||||
_logger.LogError($"attempt to unlink user for user {user_guid}, not found");
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
uacFromDb.Users ??= [];
|
||||
if (!uacFromDb.Users.Contains(userFromDb))
|
||||
{
|
||||
return BadRequest("user not linked");
|
||||
}
|
||||
uacFromDb.Users.Remove(userFromDb);
|
||||
Rememberer.RememberUAC(uacFromDb);
|
||||
return Ok(uacFromDb);
|
||||
}
|
||||
[HttpPatch]
|
||||
[Route("UnlinkAccount")]
|
||||
[Produces("application/json")]
|
||||
public IActionResult UnlinkAccount([FromBody] extraSpecialObjectReadGlorifiedTupleFor_LinkAccount req)
|
||||
{
|
||||
var uac_guid = req.uac_guid;
|
||||
var account_guid = req.account_guid;
|
||||
var uacFromDb = Rememberer.SearchUAC(uac => uac.Id == uac_guid);
|
||||
if (uacFromDb == null)
|
||||
{
|
||||
_logger.LogError($"attempt to unlink uac for uac {uac_guid}, not found");
|
||||
return NotFound();
|
||||
}
|
||||
var accountFromDb = Rememberer.SearchAccount(a => a.Id == account_guid);
|
||||
if (accountFromDb == null)
|
||||
{
|
||||
_logger.LogError($"attempt to unlink account for user {account_guid}, not found");
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
uacFromDb.AccountInChannels ??= [];
|
||||
if (!uacFromDb.AccountInChannels.Contains(accountFromDb))
|
||||
{
|
||||
return BadRequest("account not linked");
|
||||
}
|
||||
uacFromDb.AccountInChannels.Remove(accountFromDb);
|
||||
Rememberer.RememberUAC(uacFromDb);
|
||||
return Ok(uacFromDb);
|
||||
}
|
||||
[HttpPatch]
|
||||
[Route("UnlinkChannel")]
|
||||
[Produces("application/json")]
|
||||
public IActionResult UnlinkChannel([FromBody] extraSpecialObjectReadGlorifiedTupleFor_LinkChannel req)
|
||||
{
|
||||
var uac_guid = req.uac_guid;
|
||||
var channel_guid = req.channel_guid;
|
||||
var uacFromDb = Rememberer.SearchUAC(uac => uac.Id == uac_guid);
|
||||
if (uacFromDb == null)
|
||||
{
|
||||
_logger.LogError($"attempt to unlink channal for uac {uac_guid}, not found");
|
||||
return NotFound();
|
||||
}
|
||||
var channelFromDb = Rememberer.SearchChannel(c => c.Id == channel_guid);
|
||||
if (channelFromDb == null)
|
||||
{
|
||||
_logger.LogError($"attempt to unlink user for user {channel_guid}, not found");
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
uacFromDb.Users ??= [];
|
||||
if (!uacFromDb.Channels.Contains(channelFromDb))
|
||||
{
|
||||
return BadRequest("user not linked");
|
||||
}
|
||||
uacFromDb.Channels.Remove(channelFromDb);
|
||||
Rememberer.RememberUAC(uacFromDb);
|
||||
return Ok(uacFromDb);
|
||||
}
|
||||
}
|
||||
|
@ -38,7 +38,7 @@
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Insert GUID</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<button type="button" class="btn btn-close" data-dismiss="add-modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
@ -54,12 +54,39 @@
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button id="modalsubmit" type="button" class="btn btn-primary">Save changes</button>
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="add-modal">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="remove-modal" class="modal" tabindex="-1" role="dialog">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Confirm</h5>
|
||||
<button type="button" class="btn-close" data-dismiss="remove-modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>
|
||||
are you sure you wnat to unlink
|
||||
<input id="removeModalText" enabled="false" type="text" />
|
||||
</p>
|
||||
<p>
|
||||
to be clear; this is going to "unlink", not like.. delete.
|
||||
</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button id="modalsubmit" type="button" class="btn btn-danger">unlink</button>
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="remove-modal">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@section Scripts{
|
||||
<script type="text/javascript">
|
||||
function addChannel(){
|
||||
@ -69,7 +96,7 @@
|
||||
}
|
||||
function addChannelSubmit(){
|
||||
let guid = document.querySelector("#add-modal #addmodaltext").value;
|
||||
linkUAC_Channel(guid);
|
||||
linkUAC_Channel(guid, () => { window.location.reload(); });
|
||||
$("#add-modal").modal("hide");
|
||||
console.log(guid);
|
||||
}
|
||||
@ -80,7 +107,7 @@
|
||||
}
|
||||
function addUserSubmit(){
|
||||
let guid = document.querySelector("#add-modal #addmodaltext").value;
|
||||
linkUAC_User(guid);
|
||||
linkUAC_User(guid, () => {window.location.reload(); });
|
||||
$("#add-modal").modal("hide");
|
||||
console.log(guid);
|
||||
}
|
||||
@ -91,20 +118,53 @@
|
||||
}
|
||||
function addAccountSubmit(){
|
||||
let guid = document.querySelector("#add-modal #addmodaltext").value;
|
||||
linkUAC_Account(guid);
|
||||
linkUAC_Account(guid, () => { window.location.reload(); });
|
||||
$("#add-modal").modal("hide");
|
||||
console.log(guid);
|
||||
}
|
||||
function removeUser(guid){
|
||||
document.querySelector("#remove-modal #removeModalText").value = guid;
|
||||
let modalbutton = document.querySelector("#remove-modal button#modalsubmit");
|
||||
modalbutton.onclick = removeUserSubmit;
|
||||
$("#remove-modal").modal("show");
|
||||
}
|
||||
function removeUserSubmit(){
|
||||
let guid = document.querySelector("#remove-modal #removeModalText").value;
|
||||
unlinkUAC_User(guid, () => { window.location.reload(); });
|
||||
$("#remove-modal").modal("hide");
|
||||
}
|
||||
function removeChannel(guid){
|
||||
document.querySelector("#remove-modal #removeModalText").value = guid;
|
||||
let modalbutton = document.querySelector("#remove-modal button#modalsubmit");
|
||||
modalbutton.onclick = removeChannelSubmit;
|
||||
$("#remove-modal").modal("show");
|
||||
}
|
||||
function removeChannelSubmit(){
|
||||
let guid = document.querySelector("#remove-modal #removeModalText").value;
|
||||
unlinkUAC_Channel(guid, () => { window.location.reload(); });
|
||||
$("#remove-modal").modal("hide");
|
||||
}
|
||||
function removeAccount(guid){
|
||||
document.querySelector("#remove-modal #removeModalText").value = guid;
|
||||
let modalbutton = document.querySelector("#remove-modal button#modalsubmit");
|
||||
modalbutton.onclick = removeAccountSubmit;
|
||||
$("#remove-modal").modal("show");
|
||||
}
|
||||
function removeAccountSubmit(){
|
||||
let guid = document.querySelector("#remove-modal #removeModalText").value;
|
||||
unlinkUAC_Account(guid , () => { window.location.reload(); });
|
||||
$("#remove-modal").modal("hide");
|
||||
}
|
||||
function channelsTree() {
|
||||
@{
|
||||
var sb = new StringBuilder();
|
||||
sb.Append("[{text: \"Channels\", \"expanded\":true, nodes: [");
|
||||
|
||||
sb.Append($"{{text: \"<button onclick=\\\"addChannel()\\\">add channel<button>\"}}");
|
||||
sb.Append($"{{text: \"<button type=\\\"button\\\" class=\\\"btn btn-primary\\\" onclick=\\\"addChannel()\\\">add channel</button>\"}}");
|
||||
foreach (var acc in Model.Channels?.OrderBy(a => a.DisplayName))
|
||||
{
|
||||
sb.Append(',');
|
||||
sb.Append($"{{text: \"<a href=\\\"/Channels/Details/{acc.Id}\\\">{acc.DisplayName}</a> - <button type=\\\"button\\\" class=\\\"btn\\\" onclick=\\\"removeUser('{acc.Id}')\\\">remove (todo)</button>\"}}");
|
||||
sb.Append($"{{text: \"<a href=\\\"/Channels/Details/{acc.Id}\\\">{acc.DisplayName}</a> - <button type=\\\"button\\\" class=\\\"btn btn-danger\\\" onclick=\\\"removeChannel('{acc.Id}')\\\">remove</button>\"}}");
|
||||
}
|
||||
sb.Append("]}]");
|
||||
}
|
||||
@ -116,11 +176,11 @@
|
||||
sb = new StringBuilder();
|
||||
sb.Append("[{text: \"Users\", \"expanded\":true, nodes: [");
|
||||
|
||||
sb.Append($"{{text: \"<button onclick=\\\"addUser()\\\">add user</button>\"}}");
|
||||
sb.Append($"{{text: \"<button type=\\\"button\\\" class=\\\"btn btn-primary\\\" onclick=\\\"addUser()\\\">add user</button>\"}}");
|
||||
foreach (var acc in Model.Users?.OrderBy(a => a.DisplayName))
|
||||
{
|
||||
sb.Append(',');
|
||||
sb.Append($"{{text: \"<a href=\\\"/Users/Details/{acc.Id}\\\">{acc.DisplayName}</a> - <button type=\\\"button\\\" class=\\\"btn\\\" onclick=\\\"removeUser('{acc.Id}')\\\">remove (todo)</button>\"}}");
|
||||
sb.Append($"{{text: \"<a href=\\\"/Users/Details/{acc.Id}\\\">{acc.DisplayName}</a> - <button type=\\\"button\\\" class=\\\"btn btn-danger\\\" onclick=\\\"removeUser('{acc.Id}')\\\">remove</button>\"}}");
|
||||
}
|
||||
sb.Append("]}]");
|
||||
}
|
||||
@ -132,11 +192,11 @@
|
||||
sb = new StringBuilder();
|
||||
sb.Append("[{text: \"Accounts\", \"expanded\":true, nodes: [");
|
||||
|
||||
sb.Append($"{{text: \"<button onclick=\\\"addAccount()\\\">add account</button>\"}}");
|
||||
sb.Append($"{{text: \"<button type=\\\"button\\\" class=\\\"btn btn-primary\\\" onclick=\\\"addAccount()\\\">add account</button>\"}}");
|
||||
foreach (var acc in Model.AccountInChannels?.OrderBy(a => a.DisplayName))
|
||||
{
|
||||
sb.Append(',');
|
||||
sb.Append($"{{text: \"<a href=\\\"/Accounts/Details/{acc.Id}\\\">{acc.DisplayName}</a> - <button type=\\\"button\\\" class=\\\"btn\\\" onclick=\\\"removeAccounts('{acc.Id}')\\\">remove (todo)</button>\"}}");
|
||||
sb.Append($"{{text: \"<a href=\\\"/Accounts/Details/{acc.Id}\\\">{acc.DisplayName}</a> - <button type=\\\"button\\\" class=\\\"btn btn-danger\\\" onclick=\\\"removeAccount('{acc.Id}')\\\">remove</button>\"}}");
|
||||
}
|
||||
sb.Append("]}]");
|
||||
}
|
||||
@ -147,5 +207,8 @@
|
||||
$('#usersTree').bstreeview({ data: usersTree() });
|
||||
$('#accountsTree').bstreeview({ data: accountsTree() });
|
||||
|
||||
var components = window.location.pathname.split('/');
|
||||
var uacId = components[3];
|
||||
|
||||
</script>
|
||||
}
|
||||
|
@ -21,7 +21,6 @@ function patchModel(model, deprecated_apiUrl)
|
||||
var type=components[1];
|
||||
// var id=components[3];
|
||||
|
||||
console.log("dexter impression: I am now ready to post the following content:");
|
||||
console.log(JSON.stringify(model));
|
||||
fetch(apiUrl + type + '/', {
|
||||
method: 'PATCH',
|
||||
@ -53,6 +52,7 @@ function deleteModel(model, deprecated_apiUrl)
|
||||
// console.log("wtf are you doing? " + components[2] + " is something other than Details");
|
||||
// }
|
||||
var type=components[1];
|
||||
let result = null;
|
||||
// var id=components[3];
|
||||
fetch(apiUrl + type + '/', {
|
||||
method: 'DELETE',
|
||||
@ -70,13 +70,15 @@ function deleteModel(model, deprecated_apiUrl)
|
||||
.then(returnedSuccessdata => {
|
||||
// perhaps a success callback
|
||||
console.log('returnedSuccessdata:', returnedSuccessdata);
|
||||
if(callback !== null) { callback(); }
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error:', error);
|
||||
});
|
||||
}
|
||||
function linkUAC_Channel(channel_guid)
|
||||
function linkUAC_Channel(channel_guid, callback)
|
||||
{
|
||||
|
||||
var components = window.location.pathname.split('/');
|
||||
var id=components[3];
|
||||
let model={"uac_guid": id,
|
||||
@ -97,12 +99,13 @@ function linkUAC_Channel(channel_guid)
|
||||
.then(returnedSuccessdata => {
|
||||
// perhaps a success callback
|
||||
console.log('returnedSuccessdata:', returnedSuccessdata);
|
||||
if(callback !== null) { callback(); }
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error:', error);
|
||||
});
|
||||
}
|
||||
function linkUAC_User(user_guid)
|
||||
function linkUAC_User(user_guid, callback)
|
||||
{
|
||||
var components = window.location.pathname.split('/');
|
||||
var id=components[3];
|
||||
@ -124,13 +127,15 @@ function linkUAC_User(user_guid)
|
||||
.then(returnedSuccessdata => {
|
||||
// perhaps a success callback
|
||||
console.log('returnedSuccessdata:', returnedSuccessdata);
|
||||
if(callback !== null) { callback(); }
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error:', error);
|
||||
});
|
||||
}
|
||||
function linkUAC_Account(account_guid)
|
||||
function linkUAC_Account(account_guid, callback)
|
||||
{
|
||||
var reuslt = null;
|
||||
var components = window.location.pathname.split('/');
|
||||
var id=components[3];
|
||||
let model={"uac_guid": id,
|
||||
@ -151,6 +156,91 @@ function linkUAC_Account(account_guid)
|
||||
.then(returnedSuccessdata => {
|
||||
// perhaps a success callback
|
||||
console.log('returnedSuccessdata:', returnedSuccessdata);
|
||||
if(callback !== null) { callback(); }
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error:', error);
|
||||
});
|
||||
}
|
||||
function unlinkUAC_User(user_guid, callback)
|
||||
{
|
||||
var components = window.location.pathname.split('/');
|
||||
var id=components[3];
|
||||
let model={"uac_guid": id,
|
||||
"user_guid": user_guid};
|
||||
fetch(apiUrl + "UAC/UnlinkUser/", {
|
||||
method: 'PATCH',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify(model),
|
||||
})
|
||||
.then(response => {
|
||||
if (!response.ok) {
|
||||
throw new Error('Network response was not "ok". which is not ok.');
|
||||
}
|
||||
return response.json();
|
||||
})
|
||||
.then(returnedSuccessdata => {
|
||||
// perhaps a success callback
|
||||
console.log('returnedSuccessdata:', returnedSuccessdata);
|
||||
if(callback !== null) { callback(); }
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error:', error);
|
||||
});
|
||||
}
|
||||
function unlinkUAC_Account(account_guid, callback)
|
||||
{
|
||||
var components = window.location.pathname.split('/');
|
||||
var id=components[3];
|
||||
let model={"uac_guid": id,
|
||||
"account_guid": account_guid};
|
||||
fetch(apiUrl + "UAC/UnlinkAccount/", {
|
||||
method: 'PATCH',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify(model),
|
||||
})
|
||||
.then(response => {
|
||||
if (!response.ok) {
|
||||
throw new Error('Network response was not "ok". which is not ok.');
|
||||
}
|
||||
return response.json();
|
||||
})
|
||||
.then(returnedSuccessdata => {
|
||||
// perhaps a success callback
|
||||
console.log('returnedSuccessdata:', returnedSuccessdata);
|
||||
if(callback !== null) { callback(); }
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error:', error);
|
||||
});
|
||||
}
|
||||
function unlinkUAC_Channel(user_guid, callback)
|
||||
{
|
||||
var components = window.location.pathname.split('/');
|
||||
var id=components[3];
|
||||
let model={"uac_guid": id,
|
||||
"channel_guid": user_guid};
|
||||
fetch(apiUrl + "UAC/UnlinkChannel/", {
|
||||
method: 'PATCH',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify(model),
|
||||
})
|
||||
.then(response => {
|
||||
if (!response.ok) {
|
||||
throw new Error('Network response was not "ok". which is not ok.');
|
||||
}
|
||||
return response.json();
|
||||
})
|
||||
.then(returnedSuccessdata => {
|
||||
// perhaps a success callback
|
||||
console.log('returnedSuccessdata:', returnedSuccessdata);
|
||||
if(callback !== null) { callback(); }
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error:', error);
|
||||
|
Loading…
Reference in New Issue
Block a user