diff Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs @ 178:33e57fd1a6c9

Roles: en dominio y autoregistración
author nelopauselli
date Mon, 08 Aug 2011 12:30:37 -0300
parents f17252543cbf
children 222362c29416
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs	Mon Aug 08 10:22:22 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs	Mon Aug 08 12:30:37 2011 -0300
@@ -31,11 +31,26 @@
                 if (identityProvider == IdentityProviderEnum.Twitter)
                     persona.Twitter = username;
 
+            	SetDefaultGroups(persona);
+
                 _personaRepository.Save(persona);
             }
 		    return true;
 		}
 
+		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.Administrador);
+		}
+
 		public void AddCuenta(IdentityProviderEnum identityProvider, string username)
 		{
 			var persona = IdentityContext.GetUsuario();
@@ -66,7 +81,13 @@
         public Resultado Add(string nombre, string twitter, string mail, string blog)
         {
             var persona = new Persona(nombre) {Twitter = twitter, Mail = mail, Blog = blog};
-            _personaRepository.Save(persona);
+
+			if (!string.IsNullOrWhiteSpace(twitter))
+				persona.AddCuenta(new Cuenta(IdentityProviderEnum.Twitter, twitter));
+
+			SetDefaultGroups(persona);
+
+			_personaRepository.Save(persona);
 
             return new Resultado(true);
         }