Mercurial > altnet-hispano
annotate Agendas/trunk/src/Agendas.Web/Controllers/PerfilController.cs @ 177:784d81e32366
Quitando la opción de proponer para esta versión
author | nelopauselli |
---|---|
date | Mon, 08 Aug 2011 10:22:22 -0300 |
parents | 97e51ddeeb58 |
children | 1deccd6c3cb2 |
rev | line source |
---|---|
112
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
1 using System; |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
2 using System.Linq; |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
3 using System.Web.Mvc; |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
4 using AltNetHispano.Agendas.Domain; |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
5 using AltNetHispano.Agendas.Factories; |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
6 using AltNetHispano.Agendas.Twitter; |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
7 using AltNetHispano.Agendas.Web.Models; |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
8 |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
9 namespace AltNetHispano.Agendas.Web.Controllers |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
10 { |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
11 public class PerfilController : Controller |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
12 { |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
13 public ActionResult Index() |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
14 { |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
15 var persona = IdentityContext.GetUsuario(); |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
16 |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
17 if (persona == null) |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
18 { |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
19 ModelState.AddModelError(string.Empty, "No fue posible recuperar su perfil, vuelva a autenticarse y reintente"); |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
20 return View(); |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
21 } |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
22 |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
23 var model = new PerfilIndexModel |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
24 { |
168 | 25 Id = persona.Id, |
112
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
26 DisplayName = persona.Nombre, |
168 | 27 Email = persona.Mail, |
28 Blog = persona.Blog, | |
112
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
29 Cuentas = from c in persona.Cuentas |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
30 select |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
31 new CuentaDto |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
32 {IdentityProvider = c.IdentityProvider.ToString(), UserName = c.LogonName} |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
33 }; |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
34 |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
35 return View(model); |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
36 } |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
37 |
142 | 38 public ActionResult AddGoogleAccount() |
39 { | |
40 throw new NotImplementedException(); | |
41 } | |
42 | |
43 public ActionResult AddTwitterAccount() | |
112
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
44 { |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
45 var oAuth = new OAuthTwitter(); |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
46 |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
47 if (Request["oauth_token"] == null) |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
48 { |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
49 var action = Url.Action("AddTwitterAccount"); |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
50 var url = Request.Url.Scheme + "://" + Request.Url.Host + |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
51 (Request.Url.Port != 80 ? ":" + Request.Url.Port : string.Empty) + action; |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
52 |
115 | 53 return Redirect(oAuth.AuthorizationLinkGet(url).ToString()); |
112
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
54 } |
115 | 55 |
56 var response = oAuth.AccessTokenGet(Request["oauth_token"], Request["oauth_verifier"]); | |
57 if (response.Length > 0) | |
112
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
58 { |
115 | 59 var username = OAuthTwitter.GetResponseContent(response, "screen_name"); |
112
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
60 |
115 | 61 var personaService = AgendaFactory.GetPersonaService(); |
112
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
62 |
115 | 63 personaService.AddCuenta(IdentityProviderEnum.Twitter, username); |
64 return RedirectToAction("Index"); | |
112
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
65 } |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
66 return RedirectToAction("Index"); |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
67 } |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
68 |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
69 public ActionResult Remove(string identityProvider, string username) |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
70 { |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
71 var personaService = AgendaFactory.GetPersonaService(); |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
72 |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
73 IdentityProviderEnum ip; |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
74 if (!Enum.TryParse<IdentityProviderEnum>(identityProvider, out ip)) |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
75 { |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
76 ModelState.AddModelError("IdentityProvider", "No se reconoce el identity provider" + identityProvider); |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
77 return View("Index"); |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
78 } |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
79 |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
80 personaService.RemoveCuenta(ip, username); |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
81 |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
82 return RedirectToAction("Index"); |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
83 } |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
84 } |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
85 } |