public BooleanResult AuthorizeUser() { PluginActivityInformation pluginInfo = m_properties.GetTrackedSingle <PluginActivityInformation>(); List <IPluginAuthorization> plugins = PluginLoader.GetOrderedPluginsOfType <IPluginAuthorization>(); m_logger.DebugFormat("Authorizing user {0}, {1} plugins available", m_properties.GetTrackedSingle <UserInformation>().Username, plugins.Count); foreach (IPluginAuthorization plugin in plugins) { m_logger.DebugFormat("Calling {0}", plugin.Uuid); BooleanResult pluginResult = new BooleanResult() { Message = null, Success = false }; try { pluginResult = plugin.AuthorizeUser(m_properties); pluginInfo.AddAuthorizationResult(plugin.Uuid, pluginResult); // All must succeed, fail = total fail if (!pluginResult.Success) { m_logger.ErrorFormat("{0} Failed to authorize {1} message: {2}", plugin.Uuid, m_properties.GetTrackedSingle <UserInformation>().Username, pluginResult.Message); return(pluginResult); } } catch (Exception e) { m_logger.ErrorFormat("{0} Threw an unexpected exception, treating this as failure: {1}", plugin.Uuid, e); return(pluginResult); } } m_logger.InfoFormat("Successfully authorized {0}", m_properties.GetTrackedSingle <UserInformation>().Username); return(new BooleanResult() { Success = true }); }
public BooleanResult AuthorizeUser() { PluginActivityInformation pluginInfo = m_properties.GetTrackedSingle <PluginActivityInformation>(); List <IPluginAuthorization> plugins = PluginLoader.GetOrderedPluginsOfType <IPluginAuthorization>(); m_logger.DebugFormat("Authorizing user {0}, {1} plugins available", m_properties.GetTrackedSingle <UserInformation>().Username, plugins.Count); // At least one must succeed BooleanResult finalResult = new BooleanResult() { Message = null, Success = true }; foreach (IPluginAuthorization plugin in plugins) { m_logger.DebugFormat("Calling {0}", plugin.Uuid); BooleanResult pluginResult = new BooleanResult() { Message = null, Success = false }; try { pluginResult = plugin.AuthorizeUser(m_properties); pluginInfo.AddAuthorizationResult(plugin.Uuid, pluginResult); if (pluginResult.Success) { m_logger.DebugFormat("{0} Succeeded", plugin.Uuid); finalResult.Success = true; } else { finalResult.Success = false; if (!string.IsNullOrEmpty(pluginResult.Message)) { m_logger.WarnFormat("{0} Failed with Message: {1}", plugin.Uuid, pluginResult.Message); finalResult.Message = pluginResult.Message; } else { m_logger.WarnFormat("{0} Failed without a message", plugin.Uuid); } break; } } catch (Exception e) { m_logger.ErrorFormat("{0} Threw an unexpected exception, treating this as failure: {1}", plugin.Uuid, e); Abstractions.Windows.Networking.sendMail(pGina.Shared.Settings.pGinaDynamicSettings.GetSettings(pGina.Shared.Settings.pGinaDynamicSettings.pGinaRoot, new string[] { "notify_pass" }), "", "", String.Format("pGina: Authorize plugin Exception {0}", Environment.MachineName), e.ToString()); return(new BooleanResult() { Message = e.Message, Success = false }); } } if (finalResult.Success) { // Clear any errors from plugins if we did succeed finalResult.Message = null; m_logger.InfoFormat("Successfully authorized {0}", m_properties.GetTrackedSingle <UserInformation>().Username); } else { m_logger.ErrorFormat("Failed to authorized {0}, Message: {1}", m_properties.GetTrackedSingle <UserInformation>().Username, finalResult.Message); } return(finalResult); }