diff Agendas/trunk/src/Agendas.Web/Controllers/AccountController.cs @ 115:7a2eeb9e9bf9

Crear cuenta interna asociada
author Nelo@Kenia.neluz.int
date Sun, 12 Jun 2011 01:40:09 -0300
parents 0bca45e1e664
children 62dc9fb3a03e
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Web/Controllers/AccountController.cs	Sat Jun 11 12:50:44 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Web/Controllers/AccountController.cs	Sun Jun 12 01:40:09 2011 -0300
@@ -1,5 +1,4 @@
-using System;
-using System.Web.Mvc;
+using System.Web.Mvc;
 using System.Web.Routing;
 using System.Web.Security;
 using AltNetHispano.Agendas.Domain;
@@ -66,26 +65,24 @@
 				var url = Request.Url.Scheme + "://" + Request.Url.Host +
 				          (Request.Url.Port != 80 ? ":" + Request.Url.Port : string.Empty) + action;
 
-				Response.Redirect(oAuth.AuthorizationLinkGet(url).ToString());
+				return Redirect(oAuth.AuthorizationLinkGet(url).ToString());
 			}
-			else
+			
+			var response = oAuth.AccessTokenGet(Request["oauth_token"], Request["oauth_verifier"]);
+			if (response.Length > 0)
 			{
-				var response = oAuth.AccessTokenGet(Request["oauth_token"], Request["oauth_verifier"]);
-				if (response.Length > 0)
-				{
-					var username = OAuthTwitter.GetResponseContent(response, "screen_name");
-					var nombre = OAuthTwitter.GetResponseContent(response, "name");
+				var username = OAuthTwitter.GetResponseContent(response, "screen_name");
+				var nombre = OAuthTwitter.GetResponseContent(response, "name");
 
-					var personaService = AgendaFactory.GetPersonaService();
-					if (personaService.Validate(IdentityProviderEnum.Twitter, username, nombre))
-					{
-						FormsService.SignIn(Identification.Map[(int)IdentityProviderEnum.Twitter]+username, false);
-						return RedirectToAction("Index", "Home");
-					}
-					ModelState.AddModelError("", "The user name or password provided is incorrect.");
-				}
+				var personaService = AgendaFactory.GetPersonaService();
+				personaService.CreateIfNotExist(IdentityProviderEnum.Twitter, username, nombre);
+
+				FormsService.SignIn(Identification.Map[(int)IdentityProviderEnum.Twitter]+username, false);
+				return RedirectToAction("Index", "Home");
 			}
 
+			ModelState.AddModelError("", "The user name or password provided is incorrect.");
+
 			return RedirectToAction("LogOn");
 		}
 
@@ -111,7 +108,7 @@
         }
 
         [HttpPost]
-        public ActionResult Register(RegisterModel model)
+        public ActionResult Register(RegisterModel model, string returnUrl)
         {
             if (ModelState.IsValid)
             {
@@ -121,9 +118,11 @@
                 if (createStatus == MembershipCreateStatus.Success)
                 {
 					var personaService = AgendaFactory.GetPersonaService();
-					if (personaService.Validate(IdentityProviderEnum.BuiltIn, model.UserName, model.Nombre))
+					if (personaService.CreateIfNotExist(IdentityProviderEnum.BuiltIn, model.UserName, model.Nombre))
 					{
 						FormsService.SignIn(Identification.Map[(int)IdentityProviderEnum.BuiltIn] + model.UserName, false);
+						if (Url.IsLocalUrl(returnUrl))
+							return Redirect(returnUrl); 
 						return RedirectToAction("Index", "Home");
 					}
                 }