Mercurial > altnet-hispano
annotate Agendas/trunk/src/Agendas.Web/Controllers/AccountController.cs @ 119:8fa58a79656a
Historico
author | Nelo@Kenia.neluz.int |
---|---|
date | Wed, 22 Jun 2011 09:49:07 -0300 |
parents | 7a2eeb9e9bf9 |
children | 62dc9fb3a03e |
rev | line source |
---|---|
115 | 1 using System.Web.Mvc; |
10 | 2 using System.Web.Routing; |
3 using System.Web.Security; | |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
93
diff
changeset
|
4 using AltNetHispano.Agendas.Domain; |
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
93
diff
changeset
|
5 using AltNetHispano.Agendas.Factories; |
90
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
34
diff
changeset
|
6 using AltNetHispano.Agendas.Twitter; |
34
475be11edf56
Ajuste en los nombre de los assemblies y namespaces
nelo@MTEySS.neluz.int
parents:
10
diff
changeset
|
7 using AltNetHispano.Agendas.Web.Models; |
93 | 8 using AltNetHispano.Agendas.Web.Services; |
10 | 9 |
34
475be11edf56
Ajuste en los nombre de los assemblies y namespaces
nelo@MTEySS.neluz.int
parents:
10
diff
changeset
|
10 namespace AltNetHispano.Agendas.Web.Controllers |
10 | 11 { |
12 public class AccountController : Controller | |
13 { | |
14 | |
15 public IFormsAuthenticationService FormsService { get; set; } | |
16 public IMembershipService MembershipService { get; set; } | |
17 | |
18 protected override void Initialize(RequestContext requestContext) | |
19 { | |
20 if (FormsService == null) { FormsService = new FormsAuthenticationService(); } | |
21 if (MembershipService == null) { MembershipService = new AccountMembershipService(); } | |
22 | |
23 base.Initialize(requestContext); | |
24 } | |
25 | |
26 // ************************************** | |
27 // URL: /Account/LogOn | |
28 // ************************************** | |
29 | |
30 public ActionResult LogOn() | |
31 { | |
32 return View(); | |
33 } | |
34 | |
35 [HttpPost] | |
36 public ActionResult LogOn(LogOnModel model, string returnUrl) | |
37 { | |
38 if (ModelState.IsValid) | |
39 { | |
96
1eb5a0e531bf
Funcionamiento con cuenta interna y con cuenta de twitter, falta unificar usuarios
Nelo@Kenia.neluz.int
parents:
94
diff
changeset
|
40 if (MembershipService.ValidateUser(model.UserName, model.Password)) |
1eb5a0e531bf
Funcionamiento con cuenta interna y con cuenta de twitter, falta unificar usuarios
Nelo@Kenia.neluz.int
parents:
94
diff
changeset
|
41 { |
1eb5a0e531bf
Funcionamiento con cuenta interna y con cuenta de twitter, falta unificar usuarios
Nelo@Kenia.neluz.int
parents:
94
diff
changeset
|
42 var personaService = AgendaFactory.GetPersonaService(); |
1eb5a0e531bf
Funcionamiento con cuenta interna y con cuenta de twitter, falta unificar usuarios
Nelo@Kenia.neluz.int
parents:
94
diff
changeset
|
43 if (personaService.Validate(IdentityProviderEnum.BuiltIn, model.UserName)) |
1eb5a0e531bf
Funcionamiento con cuenta interna y con cuenta de twitter, falta unificar usuarios
Nelo@Kenia.neluz.int
parents:
94
diff
changeset
|
44 { |
1eb5a0e531bf
Funcionamiento con cuenta interna y con cuenta de twitter, falta unificar usuarios
Nelo@Kenia.neluz.int
parents:
94
diff
changeset
|
45 FormsService.SignIn(Identification.Map[(int)IdentityProviderEnum.BuiltIn] + model.UserName, model.RememberMe); |
1eb5a0e531bf
Funcionamiento con cuenta interna y con cuenta de twitter, falta unificar usuarios
Nelo@Kenia.neluz.int
parents:
94
diff
changeset
|
46 if (Url.IsLocalUrl(returnUrl)) |
1eb5a0e531bf
Funcionamiento con cuenta interna y con cuenta de twitter, falta unificar usuarios
Nelo@Kenia.neluz.int
parents:
94
diff
changeset
|
47 return Redirect(returnUrl); |
1eb5a0e531bf
Funcionamiento con cuenta interna y con cuenta de twitter, falta unificar usuarios
Nelo@Kenia.neluz.int
parents:
94
diff
changeset
|
48 return RedirectToAction("Index", "Home"); |
1eb5a0e531bf
Funcionamiento con cuenta interna y con cuenta de twitter, falta unificar usuarios
Nelo@Kenia.neluz.int
parents:
94
diff
changeset
|
49 } |
1eb5a0e531bf
Funcionamiento con cuenta interna y con cuenta de twitter, falta unificar usuarios
Nelo@Kenia.neluz.int
parents:
94
diff
changeset
|
50 } |
1eb5a0e531bf
Funcionamiento con cuenta interna y con cuenta de twitter, falta unificar usuarios
Nelo@Kenia.neluz.int
parents:
94
diff
changeset
|
51 ModelState.AddModelError("", "The user name or password provided is incorrect."); |
10 | 52 } |
53 | |
54 // If we got this far, something failed, redisplay form | |
55 return View(model); | |
56 } | |
57 | |
90
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
34
diff
changeset
|
58 public ActionResult TwitterLogOn() |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
34
diff
changeset
|
59 { |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
93
diff
changeset
|
60 var oAuth = new OAuthTwitter(); |
90
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
34
diff
changeset
|
61 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
34
diff
changeset
|
62 if (Request["oauth_token"] == null) |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
34
diff
changeset
|
63 { |
92
7027cda13de3
Armado de la url de retorno en base a la url del request
Nelo@Kenia.neluz.int
parents:
90
diff
changeset
|
64 var action = Url.Action("TwitterLogOn"); |
7027cda13de3
Armado de la url de retorno en base a la url del request
Nelo@Kenia.neluz.int
parents:
90
diff
changeset
|
65 var url = Request.Url.Scheme + "://" + Request.Url.Host + |
7027cda13de3
Armado de la url de retorno en base a la url del request
Nelo@Kenia.neluz.int
parents:
90
diff
changeset
|
66 (Request.Url.Port != 80 ? ":" + Request.Url.Port : string.Empty) + action; |
7027cda13de3
Armado de la url de retorno en base a la url del request
Nelo@Kenia.neluz.int
parents:
90
diff
changeset
|
67 |
115 | 68 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
|
69 } |
115 | 70 |
71 var response = oAuth.AccessTokenGet(Request["oauth_token"], Request["oauth_verifier"]); | |
72 if (response.Length > 0) | |
90
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
34
diff
changeset
|
73 { |
115 | 74 var username = OAuthTwitter.GetResponseContent(response, "screen_name"); |
75 var nombre = OAuthTwitter.GetResponseContent(response, "name"); | |
90
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
34
diff
changeset
|
76 |
115 | 77 var personaService = AgendaFactory.GetPersonaService(); |
78 personaService.CreateIfNotExist(IdentityProviderEnum.Twitter, username, nombre); | |
79 | |
80 FormsService.SignIn(Identification.Map[(int)IdentityProviderEnum.Twitter]+username, false); | |
81 return RedirectToAction("Index", "Home"); | |
90
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
34
diff
changeset
|
82 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
34
diff
changeset
|
83 |
115 | 84 ModelState.AddModelError("", "The user name or password provided is incorrect."); |
85 | |
90
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
34
diff
changeset
|
86 return RedirectToAction("LogOn"); |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
34
diff
changeset
|
87 } |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
34
diff
changeset
|
88 |
d1688622fa88
Autenticando con twitter (falta emprolijar el código, pero autentica!)
Nelo@Kenia.neluz.int
parents:
34
diff
changeset
|
89 // ************************************** |
10 | 90 // URL: /Account/LogOff |
91 // ************************************** | |
92 | |
93 public ActionResult LogOff() | |
94 { | |
95 FormsService.SignOut(); | |
96 | |
97 return RedirectToAction("Index", "Home"); | |
98 } | |
99 | |
100 // ************************************** | |
101 // URL: /Account/Register | |
102 // ************************************** | |
103 | |
104 public ActionResult Register() | |
105 { | |
106 ViewBag.PasswordLength = MembershipService.MinPasswordLength; | |
107 return View(); | |
108 } | |
109 | |
110 [HttpPost] | |
115 | 111 public ActionResult Register(RegisterModel model, string returnUrl) |
10 | 112 { |
113 if (ModelState.IsValid) | |
114 { | |
115 // Attempt to register the user | |
116 MembershipCreateStatus createStatus = MembershipService.CreateUser(model.UserName, model.Password, model.Email); | |
117 | |
118 if (createStatus == MembershipCreateStatus.Success) | |
119 { | |
96
1eb5a0e531bf
Funcionamiento con cuenta interna y con cuenta de twitter, falta unificar usuarios
Nelo@Kenia.neluz.int
parents:
94
diff
changeset
|
120 var personaService = AgendaFactory.GetPersonaService(); |
115 | 121 if (personaService.CreateIfNotExist(IdentityProviderEnum.BuiltIn, model.UserName, model.Nombre)) |
96
1eb5a0e531bf
Funcionamiento con cuenta interna y con cuenta de twitter, falta unificar usuarios
Nelo@Kenia.neluz.int
parents:
94
diff
changeset
|
122 { |
1eb5a0e531bf
Funcionamiento con cuenta interna y con cuenta de twitter, falta unificar usuarios
Nelo@Kenia.neluz.int
parents:
94
diff
changeset
|
123 FormsService.SignIn(Identification.Map[(int)IdentityProviderEnum.BuiltIn] + model.UserName, false); |
115 | 124 if (Url.IsLocalUrl(returnUrl)) |
125 return Redirect(returnUrl); | |
96
1eb5a0e531bf
Funcionamiento con cuenta interna y con cuenta de twitter, falta unificar usuarios
Nelo@Kenia.neluz.int
parents:
94
diff
changeset
|
126 return RedirectToAction("Index", "Home"); |
1eb5a0e531bf
Funcionamiento con cuenta interna y con cuenta de twitter, falta unificar usuarios
Nelo@Kenia.neluz.int
parents:
94
diff
changeset
|
127 } |
10 | 128 } |
96
1eb5a0e531bf
Funcionamiento con cuenta interna y con cuenta de twitter, falta unificar usuarios
Nelo@Kenia.neluz.int
parents:
94
diff
changeset
|
129 ModelState.AddModelError("", AccountValidation.ErrorCodeToString(createStatus)); |
10 | 130 } |
131 | |
132 // If we got this far, something failed, redisplay form | |
133 ViewBag.PasswordLength = MembershipService.MinPasswordLength; | |
134 return View(model); | |
135 } | |
136 | |
137 // ************************************** | |
138 // URL: /Account/ChangePassword | |
139 // ************************************** | |
140 | |
141 [Authorize] | |
142 public ActionResult ChangePassword() | |
143 { | |
144 ViewBag.PasswordLength = MembershipService.MinPasswordLength; | |
145 return View(); | |
146 } | |
147 | |
148 [Authorize] | |
149 [HttpPost] | |
150 public ActionResult ChangePassword(ChangePasswordModel model) | |
151 { | |
152 if (ModelState.IsValid) | |
153 { | |
154 if (MembershipService.ChangePassword(User.Identity.Name, model.OldPassword, model.NewPassword)) | |
155 { | |
156 return RedirectToAction("ChangePasswordSuccess"); | |
157 } | |
158 else | |
159 { | |
160 ModelState.AddModelError("", "The current password is incorrect or the new password is invalid."); | |
161 } | |
162 } | |
163 | |
164 // If we got this far, something failed, redisplay form | |
165 ViewBag.PasswordLength = MembershipService.MinPasswordLength; | |
166 return View(model); | |
167 } | |
168 | |
169 // ************************************** | |
170 // URL: /Account/ChangePasswordSuccess | |
171 // ************************************** | |
172 | |
173 public ActionResult ChangePasswordSuccess() | |
174 { | |
175 return View(); | |
176 } | |
177 | |
178 } | |
179 } |