diff options
| -rw-r--r-- | Project-Unite/ACL.cs | 2 | ||||
| -rw-r--r-- | Project-Unite/Controllers/ModeratorController.cs | 12 | ||||
| -rw-r--r-- | Project-Unite/Global.asax.cs | 60 | ||||
| -rw-r--r-- | Project-Unite/Views/Admin/Index.cshtml | 6 | ||||
| -rw-r--r-- | Project-Unite/Views/Moderator/UserDetails.cshtml | 44 | ||||
| -rw-r--r-- | Project-Unite/Views/Shared/_Layout.cshtml | 60 |
6 files changed, 99 insertions, 85 deletions
diff --git a/Project-Unite/ACL.cs b/Project-Unite/ACL.cs index c0567d9..5155573 100644 --- a/Project-Unite/ACL.cs +++ b/Project-Unite/ACL.cs @@ -169,7 +169,7 @@ namespace Project_Unite userRoles.Add(db.Roles.FirstOrDefault(r => r.Id == usrRole.RoleId) as Role); } var userRole = userRoles.OrderByDescending(m => m.Priority).FirstOrDefault(); - return hpr.ActionLink(usr.DisplayName, "ViewProfile", "Profiles", new { id = usr.DisplayName }, new { style = userRole == null ? "color:white;" : @"color: " + userRole.ColorHex }); + return hpr.ActionLink(usr.DisplayName, "ViewProfile", "Profiles", new { id = usr.DisplayName }, new { id="uname_" + usr.Id, style = userRole == null ? "color:white;" : @"color: " + userRole.ColorHex }); } } diff --git a/Project-Unite/Controllers/ModeratorController.cs b/Project-Unite/Controllers/ModeratorController.cs index 99ef8b7..04e40de 100644 --- a/Project-Unite/Controllers/ModeratorController.cs +++ b/Project-Unite/Controllers/ModeratorController.cs @@ -104,24 +104,18 @@ namespace Project_Unite.Controllers return Redirect(returnUrl); } - [HttpPost] - [ValidateAntiForgeryToken] - public ActionResult ChangeUserName(string id, ApplicationUser model, string returnUrl = "") + public ActionResult ChangeUserName(string id, string newName) { var db = new ApplicationDbContext(); var usr = db.Users.FirstOrDefault(x => x.Id == id); if (usr == null) return new HttpStatusCodeResult(404); - usr.DisplayName = model.DisplayName; + usr.DisplayName = newName; db.SaveChanges(); - if (string.IsNullOrWhiteSpace(returnUrl)) - return RedirectToAction("Users"); - else - return Redirect(returnUrl); - + return new HttpStatusCodeResult(200); } public ActionResult Lock(string id) diff --git a/Project-Unite/Global.asax.cs b/Project-Unite/Global.asax.cs index 41208ad..79df7eb 100644 --- a/Project-Unite/Global.asax.cs +++ b/Project-Unite/Global.asax.cs @@ -37,6 +37,23 @@ namespace Project_Unite migrator.Update(); + + var addr = HttpContext.Current.Request.UserHostAddress; + var db = new ApplicationDbContext(); + var ip = db.BannedIPs.FirstOrDefault(i => i.Address == addr); + if (ip != null) + { + //The user is banned. Anally rape their ability to get on here. + this.Response.StatusCode = 403; + this.CompleteRequest(); + return; + } + + + } + + protected void Application_EndRequest(object s, EventArgs e) + { string raw_url = Request.Url.ToString().Replace("//", "\\\\"); string[] split = raw_url.Split(new[] { "/" }, StringSplitOptions.RemoveEmptyEntries); @@ -44,7 +61,7 @@ namespace Project_Unite string actionname = "Index"; string controllername = "Home"; - if(split.Length > 1) + if (split.Length > 1) { controllername = split[1]; if (split.Length == 3) @@ -57,14 +74,14 @@ namespace Project_Unite var mod = ctl.GetCustomAttributes(false).FirstOrDefault(x => x is RequiresModerator); var dev = ctl.GetCustomAttributes(false).FirstOrDefault(x => x is RequiresDeveloper); - bool fail = false; + bool? fail = false; if (adm != null) - fail = (bool)!User.Identity?.IsAdmin(); + fail = !User?.Identity?.IsAdmin(); if (mod != null) - fail = (bool)!User.Identity?.IsModerator(); + fail = !User?.Identity?.IsModerator(); if (dev != null) - fail = (bool)!User.Identity?.IsDeveloper(); + fail = !User?.Identity?.IsDeveloper(); var act = ctl.GetMethods(BindingFlags.Public | BindingFlags.Instance).FirstOrDefault(x => x.Name == actionname); @@ -75,38 +92,23 @@ namespace Project_Unite bool? fail2 = true; if (adm != null) - fail2 = User.Identity?.IsAdmin(); - if (mod != null) - fail2 = User.Identity?.IsModerator(); + fail2 = User?.Identity?.IsAdmin(); + if (mod != null) + fail2 = User?.Identity?.IsModerator(); if (dev != null) - fail2 = User.Identity?.IsDeveloper(); + fail2 = User?.Identity?.IsDeveloper(); - if (fail2 != null) - fail = fail || !(bool)fail2; + bool realfail = (fail == null) ? true : (bool)fail; + bool realfail2 = (fail2 == null) ? true : (bool)fail2; - if (fail == true) + realfail = realfail || !realfail2; + + if (realfail == true) { string url = "http://" + this.Request.Url.Host.Replace("http://", "").Replace("https://", "") + "/Home/AccessDenied"; Response.Redirect(url, true); return; } - - var addr = HttpContext.Current.Request.UserHostAddress; - var db = new ApplicationDbContext(); - var ip = db.BannedIPs.FirstOrDefault(i => i.Address == addr); - if (ip != null) - { - //The user is banned. Anally rape their ability to get on here. - this.Response.StatusCode = 403; - this.CompleteRequest(); - return; - } - - - } - - protected void Application_EndRequest(object s, EventArgs e) - { var db = new ApplicationDbContext(); if (Request.IsAuthenticated) { diff --git a/Project-Unite/Views/Admin/Index.cshtml b/Project-Unite/Views/Admin/Index.cshtml index 552f80c..4839e31 100644 --- a/Project-Unite/Views/Admin/Index.cshtml +++ b/Project-Unite/Views/Admin/Index.cshtml @@ -209,7 +209,7 @@ git clone https://github.com/MichaelTheShifter/Project-Unite @foreach (var user in db.Users.ToArray()) { - <div class="modal fade" id="[email protected]"> + <div class="modal fade" id="[email protected]"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> @@ -222,7 +222,7 @@ git clone https://github.com/MichaelTheShifter/Project-Unite @Html.Partial("~/Views/Moderator/UserDetails.cshtml", user) </div> <div class="modal-footer"> - <button type="button" class="btn btn-primary" data-dismiss="modal" data-target="#[email protected]">Close</button> + <button type="button" class="btn btn-primary" data-dismiss="modal" data-target="#[email protected]">Close</button> </div> </div> </div> @@ -271,7 +271,7 @@ git clone https://github.com/MichaelTheShifter/Project-Unite </td> <td> <a href="@Url.Action("ViewProfile", "Profiles", new { id = user.DisplayName })" class="btn btn-default"><span class="glyphicon glyphicon-user"></span> View Profile</a> - <a data-toggle="modal" href="#[email protected]" class="btn btn-warning"><span class="glyphicon glyphicon-wrench"></span> Moderate</a> + <a data-toggle="modal" href="#[email protected]" class="btn btn-warning"><span class="glyphicon glyphicon-wrench"></span> Moderate</a> </td> </tr> } diff --git a/Project-Unite/Views/Moderator/UserDetails.cshtml b/Project-Unite/Views/Moderator/UserDetails.cshtml index 74556df..8a550cb 100644 --- a/Project-Unite/Views/Moderator/UserDetails.cshtml +++ b/Project-Unite/Views/Moderator/UserDetails.cshtml @@ -10,22 +10,22 @@ <ul> <li><strong>Email address: </strong><a href="mailto:@Model.Email">Email @Model.Email</a></li> - <li><strong>Display name: </strong>@Model.DisplayName + <li><strong>Display name: </strong> <div id="[email protected]">@Model.DisplayName</div> - @if (ACL.Granted(User.Identity.Name, "CanEditUsernames")) + @if (User.Identity.IsAdmin()) { if (ACL.CanManageRole(User.Identity.Name, Model.HighestRole.Id)) { <!-- Trigger the modal with a button --> - <a data-toggle="modal" data-target="#edit-user" href="#"><span class="glyphicon glyphicon-pencil"></span> Change</a> + <a data-toggle="modal" data-target="#[email protected]" href="#"><span class="glyphicon glyphicon-pencil"></span> Change</a> <!-- Modal --> - <div id="edit-user" class="modal fade" role="dialog"> + <div id="[email protected]" class="modal fade" role="dialog"> <div class="modal-dialog"> <!-- Modal content--> <div class="modal-content"> - @using (Html.BeginForm("ChangeUsername", "Moderator", new { id = Model.Id })) + @using (Html.BeginForm("ChangeUsername", "Moderator", new { id = Model.Id }, FormMethod.Post, new { name = "changeusername_" + Model.Id })) { @Html.AntiForgeryToken() <div class="modal-header"> @@ -34,11 +34,10 @@ </div> <div class="modal-body"> <p>Please enter a username for this user.</p> - <p><strong>@Html.DisplayNameFor(Model => Model.DisplayName)</strong>: @Html.TextBoxFor(Model => Model.DisplayName)</p> - + <p><strong>@Html.DisplayNameFor(Model => Model.DisplayName)</strong>: @Html.TextBoxFor(Model => Model.DisplayName, new { id="new_username_" + Model.Id, @class = "form-control" })</p> </div> <div class="modal-footer"> - <input type="submit" value="Change" class="btn btn-primary" /> + <a class="btn btn-primary" data-dismiss="modal" href="#" id="[email protected]"><span class="glyphicon glyphicon-ok"></span> Change</a> <a href="#" data-dismiss="modal" class="btn btn-default">Cancel</a> </div> } @@ -49,10 +48,7 @@ } } </li> - @if(ACL.Granted(User.Identity.Name, "CanIssueIPBan")) - { - <li><strong>Last known IP address: </strong>@Model.LastKnownIPAddress</li> - } + <li><strong>Last known IP address: </strong>@Model.LastKnownIPAddress</li> <li><strong>Banned: </strong> @if (Model.IsBanned) { @@ -111,6 +107,28 @@ <strong>Hobbies:</strong> <p>@Model.Hobbies</p> </li> +</ul> +<a data-toggle="modal" href="#" data-target="#[email protected]" id="[email protected]" class="hidden">I'm a callback.</a> -</ul>
\ No newline at end of file +<script type="text/javascript"> + $('#[email protected]').click(function (e) { //Never gets called. + e.preventDefault(); + $.ajax({ + type: 'GET', + cache: true, + url: './Moderator/ChangeUsername/@Model.Id?newName=' + encodeURIComponent($('#[email protected]').val()), + success: function (msg) { + $.ajax({ + type: "GET", + cache: true, + url: "./Moderator/GetUsername/@Model.Id", + success: function (result) { + $('#[email protected]').val(result); + $('#[email protected]').val(result); + } + }); + } + }); + }); +</script>
\ No newline at end of file diff --git a/Project-Unite/Views/Shared/_Layout.cshtml b/Project-Unite/Views/Shared/_Layout.cshtml index 29278bc..cbc938f 100644 --- a/Project-Unite/Views/Shared/_Layout.cshtml +++ b/Project-Unite/Views/Shared/_Layout.cshtml @@ -11,11 +11,41 @@ <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> + @Scripts.Render("~/Scripts/simplemde.js") + @Scripts.Render("~/bundles/modernizr") + <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> @if(ViewBag.PageDescription != null) { <meta name="description" content="@ViewBag.PageDescription" /> } + @Scripts.Render("~/bundles/jquery") + @Scripts.Render("~/bundles/bootstrap") + <script src="Scripts/jquery.signalR-2.2.2-preview1.min.js"></script> + <script src="signalr/hubs"></script> + @RenderSection("scripts", required: false) + <script type="text/javascript"> + var mde = new SimpleMDE({forceSync: true}); + mde.options.forceSync(); + </script> + <script type="text/javascript"> + var notificationHubProxy = $.connection.notificationHub; + notificationHubProxy.client.sendMessage = function (message) { + $("#notification_body").find("ul").append("<li></li>").html(message); + $.ajax({ + url : "/API/GetNotificationCount", + success : function(result){ + $("#notification_count").html(result); + } + }); + var audio = new Audio("/Content/infobox.wav"); + audio.play(); + }; + $.connection.hub.start() + .done(function(){ console.log('Now connected, connection ID=' + $.connection.hub.id); }) + .fail(function(){ console.log('Could not Connect!'); }); + }); + </script> <title>@ViewBag.Title • ShiftOS</title> @Styles.Render("~/Content/css") @@ -23,9 +53,6 @@ @Styles.Render("~/Content/Site.css") <link rel="stylesheet" href="https://cdn.rawgit.com/xcatliu/simplemde-theme-dark/master/dist/simplemde-theme-dark.min.css" /> - @Scripts.Render("~/Scripts/simplemde.js") - @Scripts.Render("~/bundles/modernizr") - <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> </head> <body> <div class="navbar navbar-default"> @@ -164,33 +191,6 @@ - @Scripts.Render("~/bundles/jquery") - @Scripts.Render("~/bundles/bootstrap") - <script src="Scripts/jquery.signalR-2.2.2-preview1.min.js"></script> - <script src="signalr/hubs"></script> - @RenderSection("scripts", required: false) - <script type="text/javascript"> - var mde = new SimpleMDE({forceSync: true}); - mde.options.forceSync(); - </script> - <script type="text/javascript"> - var notificationHubProxy = $.connection.notificationHub; - notificationHubProxy.client.sendMessage = function (message) { - $("#notification_body").find("ul").append("<li></li>").html(message); - $.ajax({ - url : "/API/GetNotificationCount", - success : function(result){ - $("#notification_count").html(result); - } - }); - var audio = new Audio("/Content/infobox.wav"); - audio.play(); - }; - $.connection.hub.start() - .done(function(){ console.log('Now connected, connection ID=' + $.connection.hub.id); }) - .fail(function(){ console.log('Could not Connect!'); }); - }); - </script> </body> </html> |
