Mercurial > altnet-hispano
annotate Agendas/trunk/src/Agendas.Web/Controllers/PerfilController.cs @ 140:3639803112c6
Refactoring de la relación entre Evento y Estado
author | nelopauselli |
---|---|
date | Fri, 29 Jul 2011 16:30:53 -0300 |
parents | 7a2eeb9e9bf9 |
children | 62dc9fb3a03e |
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; |
113
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
4 using System.Web.Routing; |
112
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.Domain; |
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.Factories; |
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.Twitter; |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
8 using AltNetHispano.Agendas.Web.Models; |
113
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
9 using AltNetHispano.Agendas.Web.Services; |
112
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 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
|
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 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
|
14 { |
113
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
15 public IMembershipService MembershipService { get; set; } |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
16 |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
17 protected override void Initialize(RequestContext requestContext) |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
18 { |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
19 //if (FormsService == null) { FormsService = new FormsAuthenticationService(); } |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
20 if (MembershipService == null) |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
21 MembershipService = new AccountMembershipService(); |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
22 |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
23 base.Initialize(requestContext); |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
24 } |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
25 |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
26 // |
112
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
27 // GET: /Perfil/ |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
28 |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
29 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
|
30 { |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
31 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
|
32 |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
33 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
|
34 { |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
35 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
|
36 return View(); |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
37 } |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
38 |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
39 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
|
40 { |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
41 DisplayName = persona.Nombre, |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
42 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
|
43 select |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
44 new CuentaDto |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
45 {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
|
46 }; |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
47 |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
48 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
|
49 } |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
50 |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
51 public ActionResult AddTwitterAccount() |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
52 { |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
53 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
|
54 |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
55 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
|
56 { |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
57 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
|
58 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
|
59 (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
|
60 |
115 | 61 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
|
62 } |
115 | 63 |
64 var response = oAuth.AccessTokenGet(Request["oauth_token"], Request["oauth_verifier"]); | |
65 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
|
66 { |
115 | 67 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
|
68 |
115 | 69 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
|
70 |
115 | 71 personaService.AddCuenta(IdentityProviderEnum.Twitter, username); |
72 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
|
73 } |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
74 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
|
75 } |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
76 |
113
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
77 public ActionResult AddBuiltInAccount() |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
78 { |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
79 return View(); |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
80 } |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
81 |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
82 [HttpPost] |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
83 public ActionResult AddBuiltInAccount(LogOnModel model) |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
84 { |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
85 if (ModelState.IsValid) |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
86 { |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
87 if (MembershipService.ValidateUser(model.UserName, model.Password)) |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
88 { |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
89 var personaService = AgendaFactory.GetPersonaService(); |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
90 personaService.AddCuenta(IdentityProviderEnum.BuiltIn, model.UserName); |
114 | 91 return RedirectToAction("Index"); |
113
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
92 } |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
93 ModelState.AddModelError("", "The user name or password provided is incorrect."); |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
94 } |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
95 |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
96 // If we got this far, something failed, redisplay form |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
97 return View(model); |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
98 } |
0eac9a1c1a6c
Soporte para asociar cuentas internas a un usuario ya identificado con twitter
Carlos Peix
parents:
112
diff
changeset
|
99 |
112
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
100 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
|
101 { |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
102 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
|
103 |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
104 IdentityProviderEnum ip; |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
105 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
|
106 { |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
107 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
|
108 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
|
109 } |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
110 |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
111 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
|
112 |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
113 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
|
114 } |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
115 } |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
diff
changeset
|
116 } |