Beispiel #1
0
        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
            });
        }
Beispiel #2
0
        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);
        }