public UsergroupsModule() : base("/admin") { this.RequiresAuthentication(); this.RequiresClaims(new[] { "Users" }); this.Get["/usergroups"] = x => { this.Model.Usergroups = new UsergroupsModel(); return(this.View["admin/Usergroups", this.Model]); }; this.Get["/usergroups/{id:guid}"] = x => { var usergroup = Usergroup.Find(Guid.Parse(x.id)); if (usergroup == null) { return(HttpStatusCode.NotFound); } this.Model.Usergroup = usergroup; return(this.View["admin/usergroup", this.Model]); }; this.Get["/usergroups/create"] = x => { this.Model.Usergroup = new Usergroup(); this.Model.Claims = Claim.All(); return(this.View["admin/UsergroupEdit", this.Model]); }; this.Post["/usergroups/create"] = x => { // do the save var name = (string)this.Request.Form.Name; var claims = (string)this.Request.Form.Claims; var master = (MasterModel)this.Model.MasterModel; master.Errored = false; master.ErrorsList.Clear(); var newUsergroup = new Usergroup() { Id = Guid.NewGuid(), Name = name }; var allUsergroups = Usergroup.All(); if (string.IsNullOrWhiteSpace(newUsergroup.Name)) { master.ErrorsList.Add("The name must not be empty."); } if (allUsergroups.Any(u => u.Name.Equals(newUsergroup.Name))) { master.ErrorsList.Add("The provided name is already taken."); } // set the claims newUsergroup.Claims = claims.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList().Select(Guid.Parse).ToList(); // save if (master.ErrorsList.Any()) { master.Errored = true; this.Model.Usergroup = newUsergroup; this.Model.Claims = Claim.All(); var u = this.BindTo(newUsergroup); return(this.View["admin/UsergroupEdit", this.Model]); } newUsergroup.Save(); // redirect to the list return(this.Response.AsRedirect("/admin/usergroups")); }; this.Get["/usergroups/{id:guid}/edit"] = x => { var usergroup = Usergroup.Find(Guid.Parse(x.id)); if (usergroup == null) { return(HttpStatusCode.NotFound); } this.Model.Usergroup = usergroup; this.Model.Claims = Claim.All(); return(this.View["admin/UsergroupEdit", this.Model]); }; this.Post["/usergroups/{id:guid}/update"] = x => { // do the save var name = (string)this.Request.Form.Name; var claims = (string)this.Request.Form.Claims; var master = (MasterModel)this.Model.MasterModel; master.Errored = false; master.ErrorsList.Clear(); var oldUsergroup = Usergroup.Find((Guid)x.Id); var allUsergroups = Usergroup.All(); if (string.IsNullOrWhiteSpace(name)) { master.ErrorsList.Add("The name must not be empty."); } if (allUsergroups.Any(u => u.Name.Equals(name) && !u.Name.Equals(oldUsergroup.Name))) { master.ErrorsList.Add("The provided name is already taken."); } oldUsergroup.Name = name; oldUsergroup.Claims = claims.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList().Select(Guid.Parse).ToList(); // save if (master.ErrorsList.Any()) { master.Errored = true; this.Model.Usergroup = oldUsergroup; this.Model.Usergroups = Claim.All(); var u = this.BindTo(oldUsergroup); return(this.View["admin/UsergroupEdit", this.Model]); } oldUsergroup.Save(); // redirect to the list return(this.Response.AsRedirect("/admin/usergroups")); }; this.Post["/usergroups/{id:guid}/remove"] = x => { var usergroup = Usergroup.Find((Guid)x.id); if (usergroup == null) { return(HttpStatusCode.NotFound); } // remove the user try { usergroup.Delete(); } catch (InvalidDataException) { var master = (MasterModel)this.Model.MasterModel; master.Errored = true; master.ErrorsList.Add("You cannot delete a usergroup that has members assigned."); this.Model.Usergroups = new UsergroupsModel(); return(this.View["admin/Usergroups", this.Model]); } return(this.Response.AsRedirect("/admin/usergroups")); }; }
public UsersModule() : base("/admin") { this.RequiresAuthentication(); this.RequiresClaims(new[] { "Users" }); this.Get["/users"] = x => { this.Model.Users = new UsersModel(); return(this.View["admin/Users", this.Model]); }; this.Get["/users/{id:guid}"] = x => { var user = User.Find(Guid.Parse(x.id)); if (user == null) { return(HttpStatusCode.NotFound); } this.Model.User = user; return(this.View["admin/user", this.Model]); }; this.Get["/users/create"] = x => { this.Model.User = new User(); this.Model.Usergroups = Usergroup.All(); return(this.View["admin/UserEdit", this.Model]); }; this.Post["/users/create"] = x => { // do the save var username = (string)this.Request.Form.UserName; var email = (string)this.Request.Form.Email; var password = (string)this.Request.Form.Password; var passwordValid = (string)this.Request.Form.PasswordValidation; var usergroup = Guid.Parse((string)this.Request.Form.Usergroup); var master = (MasterModel)this.Model.MasterModel; master.Errored = false; master.ErrorsList.Clear(); var newUser = new User() { Id = Guid.NewGuid(), UserName = username, Email = email, Password = password, UsergroupId = usergroup }; newUser.EncodePassword(); var allUsers = User.All(); if (string.IsNullOrWhiteSpace(newUser.UserName)) { master.ErrorsList.Add("The username must not be empty."); } if (allUsers.Any(u => u.UserName.Equals(newUser.UserName))) { master.ErrorsList.Add("The provided username is already taken."); } if (string.IsNullOrWhiteSpace(newUser.Email)) { master.ErrorsList.Add("The email must not be empty."); } if (allUsers.Any(u => u.Email.Equals(newUser.Email))) { master.ErrorsList.Add("The provided email is already taken."); } if (string.IsNullOrWhiteSpace(newUser.Password)) { master.ErrorsList.Add("The password must not be empty."); } if (!newUser.Password.Equals(passwordValid)) { master.ErrorsList.Add("The passwords do not match."); } // save if (master.ErrorsList.Any()) { master.Errored = true; this.Model.User = newUser; this.Model.Usergroups = Usergroup.All(); var u = this.BindTo(newUser, "Password"); return(this.View["admin/UserEdit", this.Model]); } newUser.Save(); // redirect to the list return(this.Response.AsRedirect("/admin/users")); }; this.Get["/users/{id:guid}/edit"] = x => { var user = User.Find(Guid.Parse(x.id)); if (user == null) { return(HttpStatusCode.NotFound); } this.Model.User = user; this.Model.Usergroups = Usergroup.All(); return(this.View["admin/UserEdit", this.Model]); }; this.Post["/users/{id:guid}/update"] = x => { // do the save var username = (string)this.Request.Form.UserName; var email = (string)this.Request.Form.Email; var password = (string)this.Request.Form.Password; var passwordValid = (string)this.Request.Form.PasswordValidation; var usergroup = Guid.Parse((string)this.Request.Form.Usergroup); var master = (MasterModel)this.Model.MasterModel; master.Errored = false; master.ErrorsList.Clear(); var oldUser = User.Find((Guid)x.Id); var allUsers = User.All(); if (string.IsNullOrWhiteSpace(username)) { master.ErrorsList.Add("The username must not be empty."); } if (allUsers.Any(u => u.UserName.Equals(username) && !u.UserName.Equals(oldUser.UserName))) { master.ErrorsList.Add("The provided username is already taken."); } oldUser.UserName = username; if (string.IsNullOrWhiteSpace(oldUser.Email)) { master.ErrorsList.Add("The email must not be empty."); } if (allUsers.Any(u => !u.Email.Equals(oldUser.Email) && u.Email.Equals(email))) { master.ErrorsList.Add("The provided email is already taken."); } oldUser.Email = email; if (!string.IsNullOrWhiteSpace(password)) { if (!password.Equals(passwordValid)) { master.ErrorsList.Add("The passwords do not match."); } else { oldUser.Password = password; oldUser.EncodePassword(); } } oldUser.UsergroupId = usergroup; // save if (master.ErrorsList.Any()) { master.Errored = true; this.Model.User = oldUser; this.Model.Usergroups = Usergroup.All(); var u = this.BindTo(oldUser, "Password"); return(this.View["admin/UserEdit", this.Model]); } oldUser.Save(); // redirect to the list return(this.Response.AsRedirect("/admin/users")); }; this.Post["/users/{id:guid}/remove"] = x => { var user = User.Find((Guid)x.id); if (user == null) { return(HttpStatusCode.NotFound); } // remove the user user.Delete(); return(this.Response.AsRedirect("/admin/users")); }; }
public UsergroupsModel() { this.AllGroups = Usergroup.All().ToList(); this.AllClaims = Claim.All().ToList(); }