Mercurial > altnet-hispano
changeset 180:222362c29416
UI para asignación de roles
author | nelopauselli |
---|---|
date | Mon, 08 Aug 2011 16:42:52 -0300 |
parents | 1deccd6c3cb2 |
children | 6ee05ceea8c3 |
files | Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs Agendas/trunk/src/Agendas.Tests/Cruds/PersonaCrud.cs Agendas/trunk/src/Agendas.Tests/PersonaServiceTests.cs Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj Agendas/trunk/src/Agendas.Web/Controllers/PerfilController.cs Agendas/trunk/src/Agendas.Web/Controllers/PersonaController.cs Agendas/trunk/src/Agendas.Web/DataProviders.cs Agendas/trunk/src/Agendas.Web/Models/PersonaModel.cs Agendas/trunk/src/Agendas.Web/Views/Shared/EditorTemplates/Object.cshtml Agendas/trunk/src/Agendas.Web/Views/Shared/EditorTemplates/Roles.cshtml |
diffstat | 10 files changed, 54 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs Mon Aug 08 15:24:26 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs Mon Aug 08 16:42:52 2011 -0300 @@ -40,15 +40,16 @@ private static void SetDefaultGroups(Persona persona) { - persona.Roles.Add(Roles.Usuario); - #if DEBUG var administradores = new[] {"nelopauselli", "alabras", "jjmoa", "jrowies"}; #else var administradores = new[] {"alabras", "jrowies", "jorgegamba"}; #endif if (administradores.Contains(persona.Twitter)) + { + persona.Roles.Add(Roles.Usuario); persona.Roles.Add(Roles.Administrador); + } } public void AddCuenta(IdentityProviderEnum identityProvider, string username) @@ -78,7 +79,7 @@ return _personaRepository.Get(id); } - public Resultado Add(string nombre, string twitter, string mail, string blog) + public Resultado Add(string nombre, string twitter, string mail, string blog, IEnumerable<string> roles) { var persona = new Persona(nombre) {Twitter = twitter, Mail = mail, Blog = blog}; @@ -87,12 +88,21 @@ SetDefaultGroups(persona); + if (roles != null) + { + persona.Roles.Clear(); + foreach (var rol in roles) + { + persona.Roles.Add(rol); + } + } + _personaRepository.Save(persona); return new Resultado(true); } - public Resultado Update(Guid id, string nombre, string twitter, string mail, string blog) + public Resultado Update(Guid id, string nombre, string twitter, string mail, string blog, IEnumerable<string> roles) { var persona = _personaRepository.Get(id); if (persona == null) @@ -106,7 +116,16 @@ //TODO: ¿que hacemos con la cuenta de twitter asociada? - return new Resultado(true); + if (roles!=null) + { + persona.Roles.Clear(); + foreach (var rol in roles) + { + persona.Roles.Add(rol); + } + } + + return new Resultado(true); } } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Tests/Cruds/PersonaCrud.cs Mon Aug 08 15:24:26 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/Cruds/PersonaCrud.cs Mon Aug 08 16:42:52 2011 -0300 @@ -24,7 +24,7 @@ { using (_requestEmulator.Invoke()) { - _personaService.Add("Nelo Pauselli", "nelopauselli", "nelopauselli@gmail.com", "http://nelopauselli.blogspot.com"); + _personaService.Add("Nelo Pauselli", "nelopauselli", "nelopauselli@gmail.com", "http://nelopauselli.blogspot.com", null); } using (_requestEmulator.Invoke()) @@ -63,7 +63,7 @@ { using (_requestEmulator.Invoke()) { - _personaService.Add("Pablo Morales", "pablomorales", "pablomorales@gmail.com", "http://pablomorales.blogspot.com"); + _personaService.Add("Pablo Morales", "pablomorales", "pablomorales@gmail.com", "http://pablomorales.blogspot.com", new[]{Roles.Usuario}); } using (_requestEmulator.Invoke())
--- a/Agendas/trunk/src/Agendas.Tests/PersonaServiceTests.cs Mon Aug 08 15:24:26 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/PersonaServiceTests.cs Mon Aug 08 16:42:52 2011 -0300 @@ -66,7 +66,7 @@ var personaRepository = DefaultPersonaRepository; var personaService = new PersonaService(personaRepository); - var r = personaService.Add("Mariano Pauselli", "marianopauselli", string.Empty, string.Empty); + var r = personaService.Add("Mariano Pauselli", "marianopauselli", string.Empty, string.Empty, null); Assert.IsTrue(r.Succeful); var todas = personaService.GetAll(); @@ -81,7 +81,7 @@ Assert.AreEqual(p1, p2); Assert.AreSame(p1, p2); - personaService.Update(personaId, p1.Nombre, p1.Twitter, "marianopauselli@gmail.com", string.Empty); + personaService.Update(personaId, p1.Nombre, p1.Twitter, "marianopauselli@gmail.com", string.Empty,null); var p3 = personaService.GetById(personaId); Assert.IsNotNull(p3);
--- a/Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj Mon Aug 08 15:24:26 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj Mon Aug 08 16:42:52 2011 -0300 @@ -233,6 +233,9 @@ <ItemGroup> <Content Include="Views\Shared\SinPermisos.cshtml" /> </ItemGroup> + <ItemGroup> + <Content Include="Views\Shared\EditorTemplates\Roles.cshtml" /> + </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
--- a/Agendas/trunk/src/Agendas.Web/Controllers/PerfilController.cs Mon Aug 08 15:24:26 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Controllers/PerfilController.cs Mon Aug 08 16:42:52 2011 -0300 @@ -116,7 +116,7 @@ var persona = IdentityContext.GetUsuario(); var personas = AgendaFactory.GetPersonaService(); - var r = personas.Update(persona.Id, model.Nombre, model.Twitter, model.EMail, model.Blog); + var r = personas.Update(persona.Id, model.Nombre, model.Twitter, model.EMail, model.Blog, null); if (r.Succeful) { this.AddNotification("Los datos fueron guardados");
--- a/Agendas/trunk/src/Agendas.Web/Controllers/PersonaController.cs Mon Aug 08 15:24:26 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Controllers/PersonaController.cs Mon Aug 08 16:42:52 2011 -0300 @@ -32,7 +32,7 @@ if (ModelState.IsValid) { var personas = AgendaFactory.GetPersonaService(); - var r = personas.Add(model.Nombre, model.Twitter, model.EMail,model.Blog); + var r = personas.Add(model.Nombre, model.Twitter, model.EMail,model.Blog, model.Roles); if (r.Succeful) { this.AddNotification("Los datos fueron guardados"); @@ -62,7 +62,8 @@ Nombre = persona.Nombre, Twitter = persona.Twitter, EMail = persona.Mail, - Blog = persona.Blog + Blog = persona.Blog, + Roles = persona.Roles.ToArray() }; return View("Defaulteditor", model); @@ -75,7 +76,7 @@ if (ModelState.IsValid) { var personas = AgendaFactory.GetPersonaService(); - var r = personas.Update(new Guid(model.Id), model.Nombre, model.Twitter, model.EMail, model.Blog); + var r = personas.Update(new Guid(model.Id), model.Nombre, model.Twitter, model.EMail, model.Blog, model.Roles); if (r.Succeful) { this.AddNotification("Los datos fueron guardados");
--- a/Agendas/trunk/src/Agendas.Web/DataProviders.cs Mon Aug 08 15:24:26 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/DataProviders.cs Mon Aug 08 16:42:52 2011 -0300 @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Web.Mvc; +using AltNetHispano.Agendas.Domain; using AltNetHispano.Agendas.Factories; using AltNetHispano.Agendas.Web.Models; @@ -23,5 +24,10 @@ select new SelectListItem {Text = p.Nombre, Value = p.Id.ToString(), Selected = p.Id.Equals(id)}; } - } + + public static IEnumerable<string> GetRoles(this HtmlHelper helper) + { + return new[] {Roles.Administrador, Roles.Usuario}; + } + } }
--- a/Agendas/trunk/src/Agendas.Web/Models/PersonaModel.cs Mon Aug 08 15:24:26 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Models/PersonaModel.cs Mon Aug 08 16:42:52 2011 -0300 @@ -22,6 +22,8 @@ [DataType(DataType.Url)] public string Blog { get; set; } + + public string[] Roles { get; set; } } public class PersonaEditModel @@ -41,6 +43,8 @@ [DataType(DataType.Url)] public string Blog { get; set; } + + public string[] Roles { get; set; } } public class PersonaDto
--- a/Agendas/trunk/src/Agendas.Web/Views/Shared/EditorTemplates/Object.cshtml Mon Aug 08 15:24:26 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Views/Shared/EditorTemplates/Object.cshtml Mon Aug 08 16:42:52 2011 -0300 @@ -5,7 +5,7 @@ @ViewData.ModelMetadata.SimpleDisplayText } } else { - foreach (var prop in ViewData.ModelMetadata.Properties.Where(metadata => metadata.ShowForEdit && !metadata.IsComplexType && !ViewData.TemplateInfo.Visited(metadata))) + foreach (var prop in ViewData.ModelMetadata.Properties.Where(metadata => metadata.ShowForEdit && !ViewData.TemplateInfo.Visited(metadata))) { if (prop.HideSurroundingHtml) { @Html.Editor(prop.PropertyName)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Web/Views/Shared/EditorTemplates/Roles.cshtml Mon Aug 08 16:42:52 2011 -0300 @@ -0,0 +1,6 @@ +@model IList<string> +@foreach (var item in Html.GetRoles()) +{ + <input type="checkbox" name="Roles" value="@item" @(Model != null && Model.Contains(item) ? "checked" : string.Empty) />@item +} +