diff --git a/Teknik/Areas/User/Controllers/UserController.cs b/Teknik/Areas/User/Controllers/UserController.cs index 0cccf34..100c68b 100644 --- a/Teknik/Areas/User/Controllers/UserController.cs +++ b/Teknik/Areas/User/Controllers/UserController.cs @@ -100,6 +100,7 @@ namespace Teknik.Areas.Users.Controllers model.UserID = user.UserId; model.Username = user.Username; model.TrustedDeviceCount = user.TrustedDevices.Count; + model.AuthTokens = user.AuthTokens.ToList(); model.UserSettings = user.UserSettings; model.SecuritySettings = user.SecuritySettings; @@ -777,5 +778,38 @@ namespace Teknik.Areas.Users.Controllers return Json(new { error = ex.GetFullMessage(true) }); } } + + [HttpPost] + [ValidateAntiForgeryToken] + public ActionResult GenerateToken(string name) + { + try + { + User user = UserHelper.GetUser(db, User.Identity.Name); + if (user != null) + { + string newTokenStr = UserHelper.GenerateAuthToken(Config, user.Username); + + if (!string.IsNullOrEmpty(newTokenStr)) + { + AuthToken token = db.AuthTokens.Create(); + token.UserId = user.UserId; + token.HashedToken = SHA256.Hash(newTokenStr); + token.Name = name; + token.LastDateUsed = DateTime.Now; + + db.AuthTokens.Add(token); + db.SaveChanges(); + return Json(new { result = newTokenStr }); + } + return Json(new { error = "Unable to generate Auth Token" }); + } + return Json(new { error = "User does not exist" }); + } + catch (Exception ex) + { + return Json(new { error = ex.GetFullMessage(true) }); + } + } } } \ No newline at end of file diff --git a/Teknik/Areas/User/Scripts/User.js b/Teknik/Areas/User/Scripts/User.js index a5d15bc..df3aeb2 100644 --- a/Teknik/Areas/User/Scripts/User.js +++ b/Teknik/Areas/User/Scripts/User.js @@ -92,6 +92,68 @@ }); }); + $('#generate_token').click(function () { + bootbox.prompt("Specify a name for this Auth Token", function (result) { + if (result) { + $.ajax({ + type: "POST", + url: generateTokenURL, + data: AddAntiForgeryToken({ name: result }), + success: function (response) { + if (response.result) { + bootbox.dialog({ + title: "Authentication Token", + message: '', + callback: function () { + window.location.reload(); + } + }); + } + else { + errorMsg = response; + if (response.error) { + errorMsg = response.error; + if (response.error.message) { + errorMsg = response.error.message; + } + } + $("#top_msg").css('display', 'inline', 'important'); + $("#top_msg").html('
Last Used on
+