Mercurial > altnet-hispano
view Agendas/trunk/src/Agendas.Web/Controllers/AccountController.cs @ 206:beeb06da4398
Al querés ingresar a un lugar que requiere autenticación y luego de autenticarse, vuelve a la página donde quería entrar
author | nelopauselli |
---|---|
date | Wed, 24 Aug 2011 10:38:13 -0300 |
parents | 1deccd6c3cb2 |
children | b921a0ab8504 |
line wrap: on
line source
using System.Web.Mvc; using System.Web.Routing; using AltNetHispano.Agendas.Domain; using AltNetHispano.Agendas.Factories; using AltNetHispano.Agendas.Twitter; using AltNetHispano.Agendas.Web.Services; namespace AltNetHispano.Agendas.Web.Controllers { public class AccountController : Controller { private IFormsAuthenticationService _formsService; protected override void Initialize(RequestContext requestContext) { if (_formsService == null) { _formsService = new FormsAuthenticationService(); } base.Initialize(requestContext); } public ActionResult LogOn() { return View(); } public ActionResult TwitterLogOn(string returnUrl) { var oAuth = new OAuthTwitter(); if (Request["oauth_token"] == null) { var action = Url.Action("TwitterLogOn"); if (!string.IsNullOrWhiteSpace(returnUrl)) action += "?ReturnUrl=" + returnUrl; var url = Request.Url.Scheme + "://" + Request.Url.Host + (Request.Url.Port != 80 ? ":" + Request.Url.Port : string.Empty) + action; return Redirect(oAuth.AuthorizationLinkGet(url).ToString()); } 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"); //TOD: Esto es temporal. nombre = nombre.Replace('\u00e1', 'á'); nombre = nombre.Replace('\u00e9', 'é'); nombre = nombre.Replace('\u00ed', 'í'); nombre = nombre.Replace('\u00fa', 'ú'); nombre = nombre.Replace('\u00c1', 'Á'); nombre = nombre.Replace('\u00c9', 'É'); nombre = nombre.Replace('\u00cd', 'Í'); nombre = nombre.Replace('\u00d3', 'Ó'); nombre = nombre.Replace('\u00da', 'Ú'); nombre = nombre.Replace('\u00f1', 'ñ'); nombre = nombre.Replace('\u00d1', 'Ñ'); var personaService = AgendaFactory.GetPersonaService(); personaService.CreateIfNotExist(IdentityProviderEnum.Twitter, username, nombre); _formsService.SignIn(Identification.Map[(int)IdentityProviderEnum.Twitter]+username, false); if (!string.IsNullOrWhiteSpace(returnUrl)) return Redirect(returnUrl); return RedirectToAction("Index", "Home"); } ModelState.AddModelError("", "The user name or password provided is incorrect."); return RedirectToAction("LogOn"); } public ActionResult LogOff() { _formsService.SignOut(); return RedirectToAction("Index", "Home"); } } }