annotate Agendas/trunk/src/Agendas.Web/Controllers/AccountController.cs @ 242:5cc1681d3789

Combinar
author juanjose.montesdeocaarbos
date Wed, 05 Oct 2011 07:57:21 -0300
parents b921a0ab8504
children 72a96459f910
rev   line source
115
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
1 using System.Web.Mvc;
10
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
2 using System.Web.Routing;
94
db4b1e2cae49 Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents: 93
diff changeset
3 using AltNetHispano.Agendas.Domain;
db4b1e2cae49 Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents: 93
diff changeset
4 using AltNetHispano.Agendas.Factories;
90
d1688622fa88 Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents: 34
diff changeset
5 using AltNetHispano.Agendas.Twitter;
93
65f0b3d70c18 Reordenando clases e interfaces
Nelo@Kenia.neluz.int
parents: 92
diff changeset
6 using AltNetHispano.Agendas.Web.Services;
10
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
7
34
475be11edf56 Ajuste en los nombre de los assemblies y namespaces
nelo@MTEySS.neluz.int
parents: 10
diff changeset
8 namespace AltNetHispano.Agendas.Web.Controllers
10
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
9 {
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
10 public class AccountController : Controller
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
11 {
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 174
diff changeset
12 private IFormsAuthenticationService _formsService;
10
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
13
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
14 protected override void Initialize(RequestContext requestContext)
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
15 {
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 174
diff changeset
16 if (_formsService == null) { _formsService = new FormsAuthenticationService(); }
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 174
diff changeset
17
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 174
diff changeset
18 base.Initialize(requestContext);
10
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
19 }
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
20
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
21 public ActionResult LogOn()
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
22 {
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
23 return View();
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
24 }
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
25
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
nelopauselli
parents: 179
diff changeset
26 public ActionResult TwitterLogOn(string returnUrl)
90
d1688622fa88 Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents: 34
diff changeset
27 {
94
db4b1e2cae49 Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents: 93
diff changeset
28 var oAuth = new OAuthTwitter();
90
d1688622fa88 Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents: 34
diff changeset
29
d1688622fa88 Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents: 34
diff changeset
30 if (Request["oauth_token"] == null)
d1688622fa88 Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents: 34
diff changeset
31 {
92
7027cda13de3 Armado de la url de retorno en base a la url del request
Nelo@Kenia.neluz.int
parents: 90
diff changeset
32 var action = Url.Action("TwitterLogOn");
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
nelopauselli
parents: 179
diff changeset
33 if (!string.IsNullOrWhiteSpace(returnUrl))
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
nelopauselli
parents: 179
diff changeset
34 action += "?ReturnUrl=" + returnUrl;
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
nelopauselli
parents: 179
diff changeset
35
92
7027cda13de3 Armado de la url de retorno en base a la url del request
Nelo@Kenia.neluz.int
parents: 90
diff changeset
36 var url = Request.Url.Scheme + "://" + Request.Url.Host +
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
nelopauselli
parents: 179
diff changeset
37 (Request.Url.Port != 80 ? ":" + Request.Url.Port : string.Empty) + action;
92
7027cda13de3 Armado de la url de retorno en base a la url del request
Nelo@Kenia.neluz.int
parents: 90
diff changeset
38
115
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
39 return Redirect(oAuth.AuthorizationLinkGet(url).ToString());
90
d1688622fa88 Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents: 34
diff changeset
40 }
115
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
41
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
42 var response = oAuth.AccessTokenGet(Request["oauth_token"], Request["oauth_verifier"]);
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
43 if (response.Length > 0)
90
d1688622fa88 Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents: 34
diff changeset
44 {
115
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
45 var username = OAuthTwitter.GetResponseContent(response, "screen_name");
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
46 var nombre = OAuthTwitter.GetResponseContent(response, "name");
174
3c70b0d8bd69 Ticket 159: Corrección temporal. Al obtener el nombre se remplazan los caracteres erróneos por los que corresponde.
juanjose.montesdeocaarbos
parents: 142
diff changeset
47 //TOD: Esto es temporal.
213
b921a0ab8504 Ticket 159: Se corrigió nombres de Twitter con caracteres inválidos (á, é, í, ó, ú, ñ y sus mayúsculas).
juanjose.montesdeocaarbos
parents: 206
diff changeset
48 nombre = nombre.Replace("\\u00e1", "á");
b921a0ab8504 Ticket 159: Se corrigió nombres de Twitter con caracteres inválidos (á, é, í, ó, ú, ñ y sus mayúsculas).
juanjose.montesdeocaarbos
parents: 206
diff changeset
49 nombre = nombre.Replace("\\u00e9", "é");
b921a0ab8504 Ticket 159: Se corrigió nombres de Twitter con caracteres inválidos (á, é, í, ó, ú, ñ y sus mayúsculas).
juanjose.montesdeocaarbos
parents: 206
diff changeset
50 nombre = nombre.Replace("\\u00ed", "í");
b921a0ab8504 Ticket 159: Se corrigió nombres de Twitter con caracteres inválidos (á, é, í, ó, ú, ñ y sus mayúsculas).
juanjose.montesdeocaarbos
parents: 206
diff changeset
51 nombre = nombre.Replace("\\u00f3", "ó");
b921a0ab8504 Ticket 159: Se corrigió nombres de Twitter con caracteres inválidos (á, é, í, ó, ú, ñ y sus mayúsculas).
juanjose.montesdeocaarbos
parents: 206
diff changeset
52 nombre = nombre.Replace("\\u00fa", "ú");
b921a0ab8504 Ticket 159: Se corrigió nombres de Twitter con caracteres inválidos (á, é, í, ó, ú, ñ y sus mayúsculas).
juanjose.montesdeocaarbos
parents: 206
diff changeset
53 nombre = nombre.Replace("\\u00c1", "Á");
b921a0ab8504 Ticket 159: Se corrigió nombres de Twitter con caracteres inválidos (á, é, í, ó, ú, ñ y sus mayúsculas).
juanjose.montesdeocaarbos
parents: 206
diff changeset
54 nombre = nombre.Replace("\\u00c9", "É");
b921a0ab8504 Ticket 159: Se corrigió nombres de Twitter con caracteres inválidos (á, é, í, ó, ú, ñ y sus mayúsculas).
juanjose.montesdeocaarbos
parents: 206
diff changeset
55 nombre = nombre.Replace("\\u00cd", "Í");
b921a0ab8504 Ticket 159: Se corrigió nombres de Twitter con caracteres inválidos (á, é, í, ó, ú, ñ y sus mayúsculas).
juanjose.montesdeocaarbos
parents: 206
diff changeset
56 nombre = nombre.Replace("\\u00d3", "Ó");
b921a0ab8504 Ticket 159: Se corrigió nombres de Twitter con caracteres inválidos (á, é, í, ó, ú, ñ y sus mayúsculas).
juanjose.montesdeocaarbos
parents: 206
diff changeset
57 nombre = nombre.Replace("\\u00da", "Ú");
b921a0ab8504 Ticket 159: Se corrigió nombres de Twitter con caracteres inválidos (á, é, í, ó, ú, ñ y sus mayúsculas).
juanjose.montesdeocaarbos
parents: 206
diff changeset
58 nombre = nombre.Replace("\\u00f1", "ñ");
b921a0ab8504 Ticket 159: Se corrigió nombres de Twitter con caracteres inválidos (á, é, í, ó, ú, ñ y sus mayúsculas).
juanjose.montesdeocaarbos
parents: 206
diff changeset
59 nombre = nombre.Replace("\\u00d1", "Ñ");
90
d1688622fa88 Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents: 34
diff changeset
60
115
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
61 var personaService = AgendaFactory.GetPersonaService();
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
62 personaService.CreateIfNotExist(IdentityProviderEnum.Twitter, username, nombre);
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
63
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 174
diff changeset
64 _formsService.SignIn(Identification.Map[(int)IdentityProviderEnum.Twitter]+username, false);
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
nelopauselli
parents: 179
diff changeset
65
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
nelopauselli
parents: 179
diff changeset
66 if (!string.IsNullOrWhiteSpace(returnUrl))
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
nelopauselli
parents: 179
diff changeset
67 return Redirect(returnUrl);
115
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
68 return RedirectToAction("Index", "Home");
90
d1688622fa88 Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents: 34
diff changeset
69 }
d1688622fa88 Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents: 34
diff changeset
70
115
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
71 ModelState.AddModelError("", "The user name or password provided is incorrect.");
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
72
90
d1688622fa88 Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents: 34
diff changeset
73 return RedirectToAction("LogOn");
d1688622fa88 Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents: 34
diff changeset
74 }
d1688622fa88 Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents: 34
diff changeset
75
10
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
76 public ActionResult LogOff()
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
77 {
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 174
diff changeset
78 _formsService.SignOut();
10
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
79 return RedirectToAction("Index", "Home");
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
80 }
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
81 }
c62b77fc33f4 website inicial
nelo@MTEySS.neluz.int
parents:
diff changeset
82 }