public ActionResult DoLogin(string username, string password) { if (Compare.IsAnyNullOrEmpty(username, password)) { return(Message(MessageResultType.Error, "Login Error", "A username and password is required.")); } Login login; using (PortalDataSession session = new PortalDataSession()) { List <Login> logins = session.Logins .Join <User>(Login.Columns.LoginId == User.Columns.LoginId) .SelectAll().Select(User.Columns.UserId.As("LoginId")) .Where(User.Columns.UserName == username) .And(User.Columns.Deleted == false).End() .ToList(); if (Compare.IsNullOrEmpty(logins)) { return(Message(MessageResultType.Error, "Login Error", "The username or password is incorrect.")); } login = logins[0]; } if (!HashProvider.SHA512.Compare(password, login.Password, 12)) { return(Message(MessageResultType.Error, "Login Error", "The username or password is incorrect.")); } Response.SetLoginCookie(username, login.LoginId); return(AjaxRedirect((SetupController c) => c.ShowDashboard())); }
public ActionResult Index() { using (PortalDataSession session = new PortalDataSession("portal")) { int loginCount = GetLoginCount(session); return(loginCount == 0 ? Redirect((SetupController c) => c.ShowAddAdmin()) : Redirect((SetupController c) => c.ShowLogin(null))); } }
private static void InitializeDatabaseRoutes(Dictionary <string, TenantData> tenantDataCache) { List <Route> primaryRoutes; List <Route> secondaryRoutes; List <RouteModule> routeModules; Dictionary <int, Module> modules; PortalTrace.Write("Routes", "InitializeDatabaseRoutes", "Begin initializing primary routes"); using (PortalDataSession session = new PortalDataSession("portal")) { PortalTrace.Write("Routes", "InitializeDatabaseRoutes", " - Database session opened."); primaryRoutes = session.Routes .Select(Data.Portal.Route.Columns.Name.As("RouteName"), Data.Portal.Route.Columns.RouteId.As("Id"), Data.Portal.Route.Columns.Expression, Data.Portal.Route.Columns.PageTitle, Data.Portal.Route.Columns.Controller.As("ControllerName"), Data.Portal.Route.Columns.Section.As("SectionName"), Tenant.Columns.Name.As("TenantName")) .Where((Data.Portal.Route.Columns.Deleted == false) & (Data.Portal.Route.Columns.Primary == true)).End() .OrderBy(Data.Portal.Route.Columns.Ordinal).Convert().ToList <Route>(); secondaryRoutes = session.Routes .Select(Data.Portal.Route.Columns.Name.As("RouteName"), Data.Portal.Route.Columns.RouteId.As("Id"), Data.Portal.Route.Columns.Expression, Data.Portal.Route.Columns.PageTitle, Data.Portal.Route.Columns.Controller.As("ControllerName"), Data.Portal.Route.Columns.Section.As("SectionName"), Tenant.Columns.Name.As("TenantName")) .Where((Data.Portal.Route.Columns.Deleted == false) & (Data.Portal.Route.Columns.Primary == false)).End() .OrderBy(Data.Portal.Route.Columns.Ordinal).Convert().ToList <Route>(); modules = session.Modules.ToDictionary <int>(Module.Columns.ModuleId); routeModules = session.RouteModules.OrderBy(RouteModule.Columns.ContainerName, RouteModule.Columns.Ordinal).ToList(); PortalTrace.Write("Routes", "InitializeDatabaseRoutes", " - Database session closed."); } foreach (Route route in primaryRoutes) { if (Compare.IsNullOrEmpty(route.ControllerName)) { route.ControllerName = "Portal"; } Route tmpRoute = route; List <RouteModule> currentRouteModules = routeModules.FindAll(rm => rm.RouteId == tmpRoute.Id); foreach (RouteModule currentRouteModule in currentRouteModules) { Module moduleDefinition; modules.TryGetValue(currentRouteModule.ModuleId, out moduleDefinition); if (moduleDefinition != null) { route.Tiles.Add(new TileDefinition(currentRouteModule.ContainerName, moduleDefinition.Path, currentRouteModule.Settings, currentRouteModule.Data)); } } string tenantName = route.TenantName ?? "DefaultTenant"; if (!tenantDataCache.ContainsKey(tenantName)) { continue; } TenantData tenantData = tenantDataCache[tenantName]; if (!Compare.IsNullOrEmpty(route.SectionName) && tenantData.Sections.ContainsKey(route.SectionName)) { tenantData.Sections[route.SectionName].AddPrimaryRoute(route); } else { tenantData.DefaultSection.AddPrimaryRoute(route); } } PortalTrace.Write("Routes", "InitializeDatabaseRoutes", "End initializing primary routes. {0} routes found.", primaryRoutes.Count); PortalTrace.Write("Routes", "InitializeDatabaseRoutes", "Begin initializing secondary routes"); foreach (Route route in secondaryRoutes) { if (Compare.IsNullOrEmpty(route.ControllerName)) { route.ControllerName = "Portal"; } string tenantName = route.TenantName ?? "DefaultTenant"; if (!tenantDataCache.ContainsKey(tenantName)) { continue; } TenantData tenantData = tenantDataCache[tenantName]; if (!Compare.IsNullOrEmpty(route.SectionName) && tenantDataCache.ContainsKey(route.SectionName)) { tenantData.Sections[route.SectionName].AddPrimaryRoute(route); } else { tenantData.DefaultSection.AddSecondaryRoute(route); } } PortalTrace.Write("Routes", "InitializeDatabaseRoutes", "End initializing secondary routes. {0} routes found.", secondaryRoutes.Count); }
public ActionResult InsertAdmin([HtmlEncode] string userName, string password, string passwordConfirm, string emailAddress) { if (string.IsNullOrEmpty(password)) { return(Message(MessageResultType.Error, "Error Creating Account", "A password is required.")); } if (password != passwordConfirm) { return(Message(MessageResultType.Error, "Error Creating Account", "The passwords do not match.")); } using (PortalDataSession session = new PortalDataSession("portal")) { using (TransactionScope scope = new TransactionScope()) { session.User = new UserIdentity("System", 1); int loginCount = GetLoginCount(session); if (loginCount > 0) { return(Message(MessageResultType.Error, "Error Creating Account", "An administrator account has already been created")); } try { EntityBase entity = new EntityBase(); entity.DisplayName = "Administrator"; entity.TenantId = 1; session.Insert(entity); Contact contact = new Contact(); contact.Email = emailAddress; contact.FirstName = "System"; contact.LastName = "Administrator"; contact.EntityId = entity.EntityId; session.Insert(contact); Login login = new Login(); login.Password = HashProvider.SHA512.GenerateString(password, "XXXXXXXXXXXX"); login.ResetAnswer = string.Empty; login.ResetQuestion = string.Empty; login.GroupMask = 1; session.Insert(login); User user = new User(); user.UserName = userName; user.LoginId = login.LoginId; user.ContactId = contact.ContactId; session.Insert(user); } catch (Exception) { return(Message(MessageResultType.Error, "An Error Was Encountered", "Unable to save.")); } scope.Complete(); } return(AjaxRedirect((SetupController c) => c.ShowLogin(userName))); } }
private static int GetLoginCount(PortalDataSession session) { return(session.Users.Where(User.Columns.UserName != "system").End().Count); }