public virtual void OnAuthentication(AuthenticationContext filterContext) { var roles = new List <WamsRole>(); roles.Add(new WamsRole { EducationOrganizationId = Constants.DPI, AgencyName = "DPI", Role = "AllFunctions", Privileges = new List <WisePrivilege> { WisePrivilege.EditAgreement, WisePrivilege.EditCredential, WisePrivilege.EditVendorSubscription, WisePrivilege.ViewCredentials, WisePrivilege.ViewReport, WisePrivilege.ViewMonitoring } }); roles.Add(new WamsRole { EducationOrganizationId = Constants.DPI, AgencyName = "DPI", Role = "Vendor", Privileges = new List <WisePrivilege> { WisePrivilege.ViewCredentials, WisePrivilege.ViewMonitoring } }); roles.Add(new WamsRole { EducationOrganizationId = 2, AgencyName = "Test Agency 2", Role = "Agency", Privileges = new List <WisePrivilege> { WisePrivilege.EditAgreement, WisePrivilege.EditVendorSubscription } }); var wamsPrincipal = new WamsPrincipal("1234567890", "Demo", "User", "*****@*****.**", roles); _sessionInfo.User = wamsPrincipal; _sessionInfo.SetCurrentAgency(Constants.DPI); filterContext.HttpContext.User = wamsPrincipal; filterContext.Controller.ViewBag.User = wamsPrincipal; }
public void OnAuthentication(AuthenticationContext filterContext) { var wamsUser = (WamsPrincipal)filterContext.RequestContext.HttpContext.User; var agencies = wamsUser.Roles .Select(x => x.EducationOrganizationId) .Distinct() .ToList(); if (_sessionInfo.CurrentAgencyId == null) { if (agencies.Count() == 1) { var edOrgId = wamsUser.Roles.First().EducationOrganizationId; var agency = _odsBusiness.GetEducationOrganization(Convert.ToInt32(edOrgId)); _sessionInfo.SetCurrentAgency(edOrgId); filterContext.Controller.ViewBag.DefaultAgency = agency.NameOfInstitution; } else { var area = (string)filterContext.RouteData.DataTokens["area"]; var controller = (string)filterContext.RouteData.Values["controller"]; var action = (string)filterContext.RouteData.Values["action"]; if (controller.Equals("Debug", StringComparison.InvariantCultureIgnoreCase) || ( area.IsNullOrWhiteSpace() && controller.Equals("WamsUser", StringComparison.InvariantCultureIgnoreCase) && (action.Equals("Index", StringComparison.InvariantCultureIgnoreCase) || action.Equals("ChangeAgency", StringComparison.InvariantCultureIgnoreCase))) ) { return; } filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "area", "" }, { "controller", "WamsUser" }, { "action", "Index" } }); } } else { var agency = _odsBusiness.GetEducationOrganization(_sessionInfo.CurrentAgencyId.GetValueOrDefault()); filterContext.Controller.ViewBag.DefaultAgency = agency != null ? agency.NameOfInstitution : ""; } if (_sessionInfo.CurrentAgencyId.HasValue) { var impersonateAgencyPrivilege = "EditCredential"; var dpiAgencyKey = Constants.DPI; var privileges = wamsUser.GetPrivileges(_sessionInfo.CurrentAgencyId.GetValueOrDefault()); filterContext.Controller.ViewBag.Privileges = privileges; filterContext.Controller.ViewBag.MultipleAgency = agencies.Count() > 1 || wamsUser.HasPrivilege(dpiAgencyKey, impersonateAgencyPrivilege); filterContext.Controller.ViewData[Constants.CAN_USER_VIEW_REPORT] = privileges.Contains(WisePrivilege.ViewReport); filterContext.Controller.ViewData[Constants.CAN_USER_EDIT_CREDENTIAL] = privileges.Contains(WisePrivilege.EditCredential); filterContext.Controller.ViewData[Constants.CAN_USER_EDIT_VENDOR_SUBSCRIPTION] = privileges.Contains(WisePrivilege.EditVendorSubscription); filterContext.Controller.ViewData[Constants.CAN_USER_VIEW_CREDENTIALS] = privileges.Contains(WisePrivilege.ViewCredentials); } }
public ActionResult ChangeAgency(int id) { _sessionInfo.SetCurrentAgency(id); return(RedirectToAction("Index", "Home")); }
public void OnAuthentication(AuthenticationContext filterContext) { var wamsUser = (WamsPrincipal)filterContext.RequestContext.HttpContext.User; if (wamsUser == null) { _log.Error($"{wamsUser} is null"); filterContext.Result = SevereError(); return; } var agencies = wamsUser.Roles .Select(x => x.EducationOrganizationId) .Distinct() .ToList(); if (!agencies.Any()) { _log.Error($"{wamsUser.FullName} has no agencies"); filterContext.Result = SevereError(); return; } var schoolYear = DateTime.Today.GetSchoolYear(); _sessionInfo.User = wamsUser; if (_sessionInfo.CurrentAgencyId == null) { if (agencies.Count() == 1) { var agencyKey = wamsUser.Roles.First().EducationOrganizationId; var edOrgId = System.Convert.ToInt32(agencyKey); var org = _orgBusiness.GetEducationOrganization(schoolYear, edOrgId); if (org == null) { _log.Error($"{wamsUser.FullName} {_sessionInfo.CurrentAgencyId} org is null"); filterContext.Result = SevereError(); return; } _sessionInfo.SetCurrentAgency(agencyKey); filterContext.Controller.ViewBag.DefaultAgency = org.NameOfInstitution; } else { var area = (string)filterContext.RouteData.DataTokens["area"]; var controller = (string)filterContext.RouteData.Values["controller"]; var action = (string)filterContext.RouteData.Values["action"]; if (controller.Equals("Debug", StringComparison.InvariantCultureIgnoreCase) || controller.Equals("Error", StringComparison.InvariantCultureIgnoreCase) || ( controller.Equals("User", StringComparison.InvariantCultureIgnoreCase) && (action.Equals("Index", StringComparison.InvariantCultureIgnoreCase) || action.Equals("ChangeAgency", StringComparison.InvariantCultureIgnoreCase))) ) { return; } filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "area", "" }, { "controller", "User" }, { "action", "Index" } }); } } else { var org = _orgBusiness.GetEducationOrganization(schoolYear, _sessionInfo.CurrentAgencyId.GetValueOrDefault()); if (org == null) { var impersonateAgencyPrivilege = ConfigurationManager.AppSettings["DPI.ImpersonateAgencyPrivilege"]; var dpiAgencyKey = int.Parse(ConfigurationManager.AppSettings["DPI.AgencyKey"]); if (agencies.Count() > 1 || wamsUser.HasPrivilege(dpiAgencyKey, impersonateAgencyPrivilege)) { //agency not found, but more than one agency or can impersonate var area = (string)filterContext.RouteData.DataTokens["area"]; var controller = (string)filterContext.RouteData.Values["controller"]; var action = (string)filterContext.RouteData.Values["action"]; if (controller.Equals("Debug", StringComparison.InvariantCultureIgnoreCase) || controller.Equals("Error", StringComparison.InvariantCultureIgnoreCase) || ( controller.Equals("User", StringComparison.InvariantCultureIgnoreCase) && (action.Equals("Index", StringComparison.InvariantCultureIgnoreCase) || action.Equals("ChangeAgency", StringComparison.InvariantCultureIgnoreCase))) ) { return; } filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "area", "" }, { "controller", "User" }, { "action", "Index" } }); } else { _log.Error($"{wamsUser.FullName} cannot access {_sessionInfo.CurrentAgencyId}"); filterContext.Result = SevereError(); return; } } else { filterContext.Controller.ViewBag.DefaultAgency = org.NameOfInstitution; } } if (_sessionInfo.CurrentAgencyId.GetValueOrDefault() > 0) { var impersonateAgencyPrivilege = ConfigurationManager.AppSettings["DPI.ImpersonateAgencyPrivilege"]; var dpiAgencyKey = int.Parse(ConfigurationManager.AppSettings["DPI.AgencyKey"]); filterContext.Controller.ViewBag.Privileges = wamsUser.GetPrivileges(_sessionInfo.CurrentAgencyId.GetValueOrDefault()); filterContext.Controller.ViewBag.MultipleAgency = agencies.Count() > 1 || wamsUser.HasPrivilege(dpiAgencyKey, impersonateAgencyPrivilege); } }