Exemplo n.º 1
0
        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()));
        }
Exemplo n.º 2
0
 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)));
     }
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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)));
            }
        }
Exemplo n.º 5
0
 private static int GetLoginCount(PortalDataSession session)
 {
     return(session.Users.Where(User.Columns.UserName != "system").End().Count);
 }