protected override void OnAuthorization(AuthorizationContext filterContext) {
base.OnAuthorization(filterContext);
RouteValueDictionary vals = filterContext.RouteData.Values;
string action = vals["action"].ToString().ToLowerInvariant();
string controller = vals["controller"].ToString().ToLowerInvariant();
if (this.User.Identity.IsAuthenticated) {
List<string> lstOKNoSiteActions = new List<string>();
lstOKNoSiteActions.Add("siteinfo");
lstOKNoSiteActions.Add("filebrowser");
lstOKNoSiteActions.Add("about");
lstOKNoSiteActions.Add("userindex");
lstOKNoSiteActions.Add("roleindex");
lstOKNoSiteActions.Add("userprofile");
lstOKNoSiteActions.Add("changepassword");
lstOKNoSiteActions.Add("login");
lstOKNoSiteActions.Add("logoff");
List<string> lstInitSiteActions = new List<string>();
lstInitSiteActions.Add("login");
lstInitSiteActions.Add("forgotpassword");
lstInitSiteActions.Add("createfirstadmin");
lstInitSiteActions.Add("databasesetup");
try {
if (!lstInitSiteActions.Contains(action)) {
if (!lstOKNoSiteActions.Contains(action) && !SiteData.CurretSiteExists) {
filterContext.Result = new RedirectResult(SiteFilename.SiteInfoURL);
return;
}
if (DatabaseUpdate.TablesIncomplete) {
filterContext.Result = new RedirectResult(SiteFilename.DatabaseSetupURL);
return;
}
}
} catch (Exception ex) {
//assumption is database is probably empty / needs updating, so trigger the under construction view
if (DatabaseUpdate.SystemNeedsChecking(ex) || DatabaseUpdate.AreCMSTablesIncomplete()) {
filterContext.Result = new RedirectResult(SiteFilename.DatabaseSetupURL);
return;
} else {
//something bad has gone down, toss back the error
throw;
}
}
}
}