/
Login.aspx.cs
50 lines (44 loc) · 1.99 KB
/
Login.aspx.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
namespace DemoSite.Headless {
using System;
using System.Web;
using KalikoCMS;
using Microsoft.AspNet.Identity.Owin;
public partial class Login : System.Web.UI.Page {
protected void LogIn(object sender, EventArgs e) {
if (!IsValid) {
return;
}
var signinManager = Context.GetOwinContext().GetUserManager<ApplicationSignInManager>();
// This doesn't count login failures towards account lockout
// To enable password failures to trigger lockout, change to shouldLockout: true
var result = signinManager.PasswordSignIn(Email.Text, Password.Text, RememberMe.Checked, shouldLockout: false);
switch (result) {
case SignInStatus.Success:
RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);
break;
case SignInStatus.LockedOut:
Utils.RenderSimplePage(Response, "Locked out", "This account has been locked out, please try again later.", 403);
break;
case SignInStatus.RequiresVerification:
// Implement verification here if wanted
break;
case SignInStatus.Failure:
default:
FailureText.Text = "Invalid login attempt";
ErrorMessage.Visible = true;
break;
}
}
public static void RedirectToReturnUrl(string returnUrl, HttpResponse response) {
if (!String.IsNullOrEmpty(returnUrl) && IsLocalUrl(returnUrl)) {
response.Redirect(returnUrl);
}
else {
response.Redirect("~/");
}
}
private static bool IsLocalUrl(string url) {
return !string.IsNullOrEmpty(url) && ((url[0] == '/' && (url.Length == 1 || (url[1] != '/' && url[1] != '\\'))) || (url.Length > 1 && url[0] == '~' && url[1] == '/'));
}
}
}