summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Project-Unite/ACL.cs2
-rw-r--r--Project-Unite/Controllers/ModeratorController.cs12
-rw-r--r--Project-Unite/Global.asax.cs60
-rw-r--r--Project-Unite/Views/Admin/Index.cshtml6
-rw-r--r--Project-Unite/Views/Moderator/UserDetails.cshtml44
-rw-r--r--Project-Unite/Views/Shared/_Layout.cshtml60
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 &bull; 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>