mirror of
https://git.teknik.io/Teknikode/Teknik.git
synced 2023-08-02 14:16:22 +02:00
Fixed deletion of user's account due to invite codes.
Added button to initiate user search on admin page. Add ability to delete user from admin page.
This commit is contained in:
parent
a9a80f7a97
commit
c8b0c1624c
@ -70,6 +70,7 @@ namespace Teknik.Areas.Admin
|
||||
"~/Areas/Admin/Scripts/UploadSearch.js"));
|
||||
|
||||
BundleTable.Bundles.Add(new CdnScriptBundle("~/bundles/UserInfo", config.CdnHost).Include(
|
||||
"~/Scripts/bootbox/bootbox.min.js",
|
||||
"~/Areas/Admin/Scripts/UserInfo.js"));
|
||||
}
|
||||
}
|
||||
|
@ -151,5 +151,28 @@ namespace Teknik.Areas.Admin.Controllers
|
||||
}
|
||||
return Redirect(Url.SubRouteUrl("error", "Error.Http404"));
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[ValidateAntiForgeryToken]
|
||||
public ActionResult DeleteAccount(string username)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (TeknikEntities db = new TeknikEntities())
|
||||
{
|
||||
User user = UserHelper.GetUser(db, username);
|
||||
if (user != null)
|
||||
{
|
||||
UserHelper.DeleteAccount(db, Config, user);
|
||||
return Json(new { result = true });
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return Json(new { error = ex.GetFullMessage(true) });
|
||||
}
|
||||
return Json(new { error = "Unable to delete user" });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -64,4 +64,25 @@ $(function () {
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$('#delete_account').click(function () {
|
||||
bootbox.confirm("Are you sure you want to delete this account?", function (result) {
|
||||
if (result) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: deleteUserURL,
|
||||
data: AddAntiForgeryToken({ username: username }),
|
||||
success: function (response) {
|
||||
if (response.result) {
|
||||
window.location.replace(homeUrl);
|
||||
}
|
||||
else {
|
||||
$("#top_msg").css('display', 'inline', 'important');
|
||||
$("#top_msg").html('<div class="alert alert-danger alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>' + parseErrorMessage(response) + '</div>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -1,6 +1,6 @@
|
||||
$(document).ready(function () {
|
||||
$('#Query').on('input', function (e) {
|
||||
query = $(this).val();
|
||||
$('#search').click(function () {
|
||||
query = $('#query').val();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: userSearchResultsURL,
|
||||
|
@ -4,6 +4,8 @@
|
||||
|
||||
<script>
|
||||
// We need to define the action URLs for the script
|
||||
var homeUrl = '@Url.SubRouteUrl("admin", "Admin.UserSearch")';
|
||||
var deleteUserURL = '@Url.SubRouteUrl("admin", "Admin.Action", new { action = "DeleteAccount" })';
|
||||
var editAccountType = '@Url.SubRouteUrl("admin", "Admin.Action", new { action = "EditUserAccountType" })';
|
||||
var editAccountStatus = '@Url.SubRouteUrl("admin", "Admin.Action", new { action = "EditUserAccountStatus" })';
|
||||
var createInviteCode = '@Url.SubRouteUrl("admin", "Admin.Action", new { action = "CreateInviteCode" })';
|
||||
@ -29,10 +31,10 @@
|
||||
<div class="col-sm-8">
|
||||
<select class="userAccountType">
|
||||
@{
|
||||
foreach (AccountType value in Enum.GetValues(typeof(AccountType)))
|
||||
{
|
||||
<option @(value == Model.AccountType ? "selected" : string.Empty)>@value.ToString()</option>
|
||||
}
|
||||
foreach (AccountType value in Enum.GetValues(typeof(AccountType)))
|
||||
{
|
||||
<option @(value == Model.AccountType ? "selected" : string.Empty)>@value.ToString()</option>
|
||||
}
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
@ -45,10 +47,10 @@
|
||||
<div class="col-sm-8">
|
||||
<select class="userAccountStatus">
|
||||
@{
|
||||
foreach (AccountStatus value in Enum.GetValues(typeof(AccountStatus)))
|
||||
{
|
||||
<option @(value == Model.AccountStatus ? "selected" : string.Empty)>@value.ToString()</option>
|
||||
}
|
||||
foreach (AccountStatus value in Enum.GetValues(typeof(AccountStatus)))
|
||||
{
|
||||
<option @(value == Model.AccountStatus ? "selected" : string.Empty)>@value.ToString()</option>
|
||||
}
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
@ -56,7 +58,13 @@
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-sm-offset-1">
|
||||
<button type="button" class="list-group-item btn-info" id="createInviteCode">Create Invite Code</button>
|
||||
<button type="button" class="btn btn-info" id="createInviteCode">Create Invite Code</button>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-sm-offset-1">
|
||||
<button type="button" class="btn btn-danger" id="delete_account">Delete Account</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -14,10 +14,13 @@
|
||||
<div class="col-sm-6 col-sm-offset-3">
|
||||
<form>
|
||||
<div class="form-group center-block">
|
||||
<input type="text" class="form-control" id="Query" name="Query" placeholder="Username" />
|
||||
<input type="text" class="form-control" id="query" name="query" placeholder="Username" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-sm-2">
|
||||
<button type="button" class="btn btn-info text-center" id="search">Search</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-10 col-sm-offset-1">
|
||||
|
@ -572,7 +572,7 @@ namespace Teknik.Areas.Users.Utility
|
||||
{
|
||||
// Update uploads
|
||||
List<Upload.Models.Upload> uploads = db.Uploads.Where(u => u.User.Username == user.Username).ToList();
|
||||
if (uploads != null)
|
||||
if (uploads.Any())
|
||||
{
|
||||
foreach (Upload.Models.Upload upload in uploads)
|
||||
{
|
||||
@ -584,7 +584,7 @@ namespace Teknik.Areas.Users.Utility
|
||||
|
||||
// Update pastes
|
||||
List<Paste.Models.Paste> pastes = db.Pastes.Where(u => u.User.Username == user.Username).ToList();
|
||||
if (pastes != null)
|
||||
if (pastes.Any())
|
||||
{
|
||||
foreach (Paste.Models.Paste paste in pastes)
|
||||
{
|
||||
@ -596,7 +596,7 @@ namespace Teknik.Areas.Users.Utility
|
||||
|
||||
// Update shortened urls
|
||||
List<ShortenedUrl> shortUrls = db.ShortenedUrls.Where(u => u.User.Username == user.Username).ToList();
|
||||
if (shortUrls != null)
|
||||
if (shortUrls.Any())
|
||||
{
|
||||
foreach (ShortenedUrl shortUrl in shortUrls)
|
||||
{
|
||||
@ -608,7 +608,7 @@ namespace Teknik.Areas.Users.Utility
|
||||
|
||||
// Update vaults
|
||||
List<Vault.Models.Vault> vaults = db.Vaults.Where(u => u.User.Username == user.Username).ToList();
|
||||
if (vaults != null)
|
||||
if (vaults.Any())
|
||||
{
|
||||
foreach (Vault.Models.Vault vault in vaults)
|
||||
{
|
||||
@ -628,7 +628,7 @@ namespace Teknik.Areas.Users.Utility
|
||||
|
||||
// Delete post comments
|
||||
List<BlogPostComment> postComments = db.BlogComments.Where(u => u.User.Username == user.Username).ToList();
|
||||
if (postComments != null)
|
||||
if (postComments.Any())
|
||||
{
|
||||
foreach (BlogPostComment postComment in postComments)
|
||||
{
|
||||
@ -639,7 +639,7 @@ namespace Teknik.Areas.Users.Utility
|
||||
|
||||
// Delete podcast comments
|
||||
List<Podcast.Models.PodcastComment> podComments = db.PodcastComments.Where(u => u.User.Username == user.Username).ToList();
|
||||
if (podComments != null)
|
||||
if (podComments.Any())
|
||||
{
|
||||
foreach (Podcast.Models.PodcastComment podComment in podComments)
|
||||
{
|
||||
@ -650,7 +650,7 @@ namespace Teknik.Areas.Users.Utility
|
||||
|
||||
// Delete Recovery Email Verifications
|
||||
List<RecoveryEmailVerification> verCodes = db.RecoveryEmailVerifications.Where(r => r.User.Username == user.Username).ToList();
|
||||
if (verCodes != null)
|
||||
if (verCodes.Any())
|
||||
{
|
||||
foreach (RecoveryEmailVerification verCode in verCodes)
|
||||
{
|
||||
@ -661,7 +661,7 @@ namespace Teknik.Areas.Users.Utility
|
||||
|
||||
// Delete Password Reset Verifications
|
||||
List<ResetPasswordVerification> verPass = db.ResetPasswordVerifications.Where(r => r.User.Username == user.Username).ToList();
|
||||
if (verPass != null)
|
||||
if (verPass.Any())
|
||||
{
|
||||
foreach (ResetPasswordVerification ver in verPass)
|
||||
{
|
||||
@ -671,9 +671,10 @@ namespace Teknik.Areas.Users.Utility
|
||||
}
|
||||
|
||||
// Delete Owned Invite Codes
|
||||
if (user.OwnedInviteCodes != null)
|
||||
List<InviteCode> ownedCodes = db.InviteCodes.Where(i => i.Owner.Username == user.Username).ToList();
|
||||
if (ownedCodes.Any())
|
||||
{
|
||||
foreach (InviteCode code in user.OwnedInviteCodes)
|
||||
foreach (InviteCode code in ownedCodes)
|
||||
{
|
||||
db.InviteCodes.Remove(code);
|
||||
}
|
||||
@ -681,15 +682,19 @@ namespace Teknik.Areas.Users.Utility
|
||||
}
|
||||
|
||||
// Delete Claimed Invite Code
|
||||
if (user.ClaimedInviteCode != null)
|
||||
List<InviteCode> claimedCodes = db.InviteCodes.Where(i => i.ClaimedUser.Username == user.Username).ToList();
|
||||
if (claimedCodes.Any())
|
||||
{
|
||||
db.InviteCodes.Remove(user.ClaimedInviteCode);
|
||||
foreach (InviteCode code in claimedCodes)
|
||||
{
|
||||
db.InviteCodes.Remove(code);
|
||||
}
|
||||
db.SaveChanges();
|
||||
}
|
||||
|
||||
// Delete Auth Tokens
|
||||
List<AuthToken> authTokens = db.AuthTokens.Where(t => t.User.UserId == user.UserId).ToList();
|
||||
if (authTokens != null)
|
||||
if (authTokens.Any())
|
||||
{
|
||||
foreach (AuthToken authToken in authTokens)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user