using System; using System.Collections.Generic; using System.Linq; using System.Security.Principal; using System.Web; using System.Web.Routing; using System.Web.Security; using MileageTraker.Web.Context; namespace MileageTraker.Web.Membership { public sealed class WebSecurity { public static HttpContextBase Context { get { return new HttpContextWrapper(HttpContext.Current); } } public static HttpRequestBase Request { get { return Context.Request; } } public static HttpResponseBase Response { get { return Context.Response; } } public static IPrincipal User { get { return Context.User; } } public static bool IsAuthenticated { get { return User.Identity.IsAuthenticated; } } public static MembershipCreateStatus Register(string username, string password, string email, bool isApproved, string firstName, string lastName) { MembershipCreateStatus createStatus; System.Web.Security.Membership.CreateUser(username, password, email, null, null, isApproved, Guid.NewGuid(), out createStatus); if (createStatus == MembershipCreateStatus.Success) { using (var context = new MileageTrakerContext()) { var user = context.Users.FirstOrDefault(usr => usr.Username == username); user.FirstName = firstName; user.LastName = lastName; context.SaveChanges(); } if (isApproved) { FormsAuthentication.SetAuthCookie(username, false); } } return createStatus; } public static Boolean Login(string username, string password, bool persistCookie = false) { var success = System.Web.Security.Membership.ValidateUser(username, password); if (success) { FormsAuthentication.SetAuthCookie(username, persistCookie); } return success; } public static void Logout() { FormsAuthentication.SignOut(); } public static MembershipUser GetUser(string username) { return System.Web.Security.Membership.GetUser(username); } public static bool ChangePassword(string userName, string currentPassword, string newPassword) { var success = false; try { var currentUser = System.Web.Security.Membership.GetUser(userName, true); success = currentUser.ChangePassword(currentPassword, newPassword); } catch (ArgumentException) { } return success; } public static bool DeleteUser(string username) { return System.Web.Security.Membership.DeleteUser(username); } public static int GetUserId(string userName) { var user = System.Web.Security.Membership.GetUser(userName); return (int) user.ProviderUserKey; } public static string CreateAccount(string userName, string password) { return CreateAccount(userName, password, requireConfirmationToken: false); } public static string CreateAccount(string userName, string password, bool requireConfirmationToken = false) { var codeFirstMembership = System.Web.Security.Membership.Provider as CodeFirstMembershipProvider; return codeFirstMembership.CreateAccount(userName, password, requireConfirmationToken); } public static string CreateUserAndAccount(string userName, string password) { return CreateUserAndAccount(userName, password, propertyValues: null, requireConfirmationToken: false); } public static string CreateUserAndAccount(string userName, string password, bool requireConfirmation) { return CreateUserAndAccount(userName, password, propertyValues: null, requireConfirmationToken: requireConfirmation); } public static string CreateUserAndAccount(string userName, string password, IDictionary values) { return CreateUserAndAccount(userName, password, propertyValues: values, requireConfirmationToken: false); } public static string CreateUserAndAccount(string userName, string password, object propertyValues = null, bool requireConfirmationToken = false) { var codeFirstMembership = System.Web.Security.Membership.Provider as CodeFirstMembershipProvider; IDictionary values = null; if (propertyValues != null) { values = new RouteValueDictionary(propertyValues); } return codeFirstMembership.CreateUserAndAccount(userName, password, requireConfirmationToken, values); } public static List FindUsersByEmail(string Email, int PageIndex, int PageSize) { int totalRecords; return System.Web.Security.Membership.FindUsersByEmail(Email, PageIndex, PageSize, out totalRecords) .Cast() .ToList(); } public static List FindUsersByName(string Username, int PageIndex, int PageSize) { int totalRecords; return System.Web.Security.Membership.FindUsersByName(Username, PageIndex, PageSize, out totalRecords) .Cast() .ToList(); } public static List GetAllUsers(int PageIndex, int PageSize) { int totalRecords; return System.Web.Security.Membership.GetAllUsers(PageIndex, PageSize, out totalRecords).Cast().ToList(); } public static void InitializeDatabaseConnection(string connectionStringName, string userTableName, string userIdColumn, string userNameColumn, bool autoCreateTables) { } public static void InitializeDatabaseConnection(string connectionString, string providerName, string userTableName, string userIdColumn, string userNameColumn, bool autoCreateTables) { } } }