Exemplo n.º 1
0
        }       //	authenticate

        /// <summary>
        /// Authenticate Subscription
        /// </summary>
        /// <param name="ldapUser">user</param>
        /// <param name="AD_User_ID">id</param>
        /// <param name="usr">user authentification (email, ...)</param>
        /// <param name="R_InterestArea_ID">interested area</param>
        /// <param name="AD_Client_ID">client</param>
        /// <param name="remoteHost">remote info</param>
        /// <param name="remoteAddr">remote info</param>
        /// <returns> user with error message set if error</returns>
        private MLdapUser AuthenticateSubscription(MLdapUser ldapUser,
                                                   int AD_User_ID, String usr, int R_InterestArea_ID,
                                                   int AD_Client_ID, String remoteHost, String remoteAddr)
        {
            String error = null;
            String info  = null;

            //	Query 2 - Validate Subscription
            String OptOutDate = null;
            bool   found      = false;
            bool   isActive   = false;
            String sql        = "SELECT IsActive, OptOutDate "
                                + "FROM R_ContactInterest "
                                + "WHERE R_InterestArea_ID=@param1 AND AD_User_ID=@param2";
            IDataReader idr = null;

            SqlParameter[] param = new SqlParameter[2];
            try
            {
                //pstmt = DataBase.prepareStatement (sql, null);
                //pstmt.setInt (1, R_InterestArea_ID);
                param[0] = new SqlParameter("@param1", R_InterestArea_ID);
                //pstmt.setInt (2, AD_User_ID);
                param[1] = new SqlParameter("@param2", AD_User_ID);
                idr      = DataBase.DB.ExecuteReader(sql, param, null);
                if (idr.Read())
                {
                    found      = true;
                    isActive   = "Y".Equals(Utility.Util.GetValueOfString(idr[0])); //    rs.getString (1));
                    OptOutDate = Utility.Util.GetValueOfString(idr[1]);             // rs.getString(2);
                }
                idr.Close();
            }
            catch (Exception e)
            {
                if (idr != null)
                {
                    idr.Close();
                }
                log.Log(Level.SEVERE, sql, e);
                error = "System Error (2)";
            }

            //	System Error
            if (error != null)
            {
                _error++;
                ldapUser.SetErrorString(error);
                return(ldapUser);
            }

            if (!found)
            {
                error = "@UserNotSubscribed@ User="******"No User Interest - " + usr
                        + " - R_InterestArea_ID=" + R_InterestArea_ID;
            }
            else if (OptOutDate != null)
            {
                error = "@UserNotSubscribed@ User="******" @OptOutDate@=" + OptOutDate;
                info  = "Opted out - " + usr + " - OptOutDate=" + OptOutDate;
            }
            else if (!isActive)
            {
                error = "@UserNotSubscribed@ User="******"User Interest Not Active - " + usr;
            }
            else
            {
                info = "User subscribed - " + usr;
            }


            if (error != null)  //	should use Language of the User
            {
                LogAccess(AD_Client_ID, AD_User_ID, R_InterestArea_ID, 0, info, error,
                          remoteHost, remoteAddr);
                ldapUser.SetErrorString(Msg.Translate(GetCtx(), error));
                return(ldapUser);
            }
            //	Done
            LogAccess(AD_Client_ID, AD_User_ID, R_InterestArea_ID, 0, info, null,
                      remoteHost, remoteAddr);
            return(ldapUser);
        }       //	authenticateSubscription
Exemplo n.º 2
0
        }       //	authenticateSubscription

        /// <summary>
        /// Authenticate Product Asset
        /// </summary>
        /// <param name="ldapUser">user</param>
        /// <param name="AD_User_ID">id</param>
        /// <param name="usr">user authentification (email, ...)</param>
        /// <param name="M_Product_ID">product</param>
        /// <param name="AD_Client_ID">client</param>
        /// <param name="remoteHost">remote info</param>
        /// <param name="remoteAddr">remote info</param>
        /// <returns>user with error message set if error</returns>
        private MLdapUser AuthenticateAsset(MLdapUser ldapUser,
                                            int AD_User_ID, String usr, int M_Product_ID,
                                            int AD_Client_ID, String remoteHost, String remoteAddr)
        {
            String error = null;
            String info  = null;

            //	Query 2 - Validate Asset
            MAsset asset = null;
            String sql   = "SELECT * "
                           + "FROM A_Asset "
                           + "WHERE M_Product_ID=@param1"
                           + " AND AD_User_ID=@param2"; //	only specific user

            //	Will have problems with multiple assets
            SqlParameter[] param = new SqlParameter[2];
            IDataReader    idr   = null;

            try
            {
                //pstmt = DataBase.prepareStatement (sql, null);
                //pstmt.setInt (1, M_Product_ID);
                param[0] = new SqlParameter("@param1", M_Product_ID);
                //pstmt.setInt (2, AD_User_ID);
                param[1] = new SqlParameter("@param2", AD_User_ID);
                idr      = DataBase.DB.ExecuteReader(sql, param, null);
                if (idr.Read())
                {
                    asset = new MAsset(GetCtx(), idr, null);
                }
                idr.Close();
            }
            catch (Exception e)
            {
                if (idr != null)
                {
                    idr.Close();
                }
                _log.Log(Level.SEVERE, sql, e);
                error = "System Error (3)";
            }

            //	System Error
            if (error != null)
            {
                _error++;
                ldapUser.SetErrorString(error);
                return(ldapUser);
            }
            int A_Asset_ID = 0;

            if (asset == null)
            {
                error = "@UserNoAsset@ User="******"No Asset - " + usr + " - " + M_Product_ID;
            }
            else if (!asset.IsActive())
            {
                A_Asset_ID = asset.GetA_Asset_ID();
                error      = "@UserNoAsset@ User="******"Asset not active - " + usr;
            }
            else if (!asset.IsActive(true))
            {
                A_Asset_ID = asset.GetA_Asset_ID();
                error      = "@UserNoAsset@ User="******" @GuaranteeDate@=" + asset.GetGuaranteeDate();
                info       = "Expired - " + usr + " - GuaranteeDate=" + asset.GetGuaranteeDate();
            }
            else
            {
                info = "Asset - " + usr;
            }

            if (error != null)  //	should use Language of the User
            {
                LogAccess(AD_Client_ID, AD_User_ID, 0, A_Asset_ID, info, error,
                          remoteHost, remoteAddr);
                ldapUser.SetErrorString(Msg.Translate(GetCtx(), error));
                return(ldapUser);
            }
            //	Done OK
            MLdapAccess log = LogAccess(AD_Client_ID, AD_User_ID, 0, asset.GetA_Asset_ID(), info, null,
                                        remoteHost, remoteAddr);
            MAssetDelivery ad = new MAssetDelivery(asset, null, log.ToString(), AD_User_ID);

            ad.SetRemote_Host(remoteHost);
            ad.SetRemote_Addr(remoteAddr);
            ad.Save();
            return(ldapUser);
        }       //	authenticateAsset
Exemplo n.º 3
0
        }       //	toString

        /// <summary>
        /// Authenticate and Authorize
        /// </summary>
        /// <param name="ldapUser"> MLdapUser object</param>
        /// <param name="usr">user name</param>
        /// <param name="o"> organization = Client Name</param>
        /// <param name="ou">ou optional organization unit = Interest Group Value
        //or Aa<M_Product_ID>aA = Active Asset of Product of user</param>
        /// <param name="remoteHost">remote host name</param>
        /// <param name="remoteAddr">remote host ip address</param>
        /// <returns>MLdapUser with updated information</returns>
        public MLdapUser Authenticate(MLdapUser ldapUser, String usr, String o, String ou,
                                      String remoteHost, String remoteAddr)
        {
            // Ensure something to return
            if (ldapUser == null)
            {
                ldapUser = new MLdapUser();
            }

            String error = null;
            String info  = null;

            //	User
            if (usr == null || usr.Trim().Length == 0)
            {
                error = "@NotFound@ User";
                ldapUser.SetErrorString(error);
                _error++;
                log.Warning(error);
                return(ldapUser);
            }
            usr = usr.Trim();
            //	Client
            if (o == null || o.Length == 0)
            {
                error = "@NotFound@ O";
                ldapUser.SetErrorString(error);
                _error++;
                log.Warning(error);
                return(ldapUser);
            }
            int AD_Client_ID = FindClient(o);

            if (AD_Client_ID == 0)
            {
                error = "@NotFound@ O=" + o;
                ldapUser.SetErrorString(error);
                _error++;
                log.Config(error);
                return(ldapUser);
            }
            //	Optional Interest Area or Asset
            int R_InterestArea_ID = 0;
            int M_Product_ID      = 0;  //	Product of Asset

            if (ou != null && ou.Length > 0)
            {
                if (ou.StartsWith("Aa") && ou.EndsWith("aA"))
                {
                    try
                    {
                        String s = ou.Substring(2, ou.Length - 2);
                        M_Product_ID = Utility.Util.GetValueOfInt(s);
                    }
                    catch
                    {
                    }
                }
                else
                {
                    R_InterestArea_ID = FindInterestArea(AD_Client_ID, ou);
                }
                if (R_InterestArea_ID == 0 && M_Product_ID == 0)
                {
                    error = "@NotFound@ OU=" + ou;
                    ldapUser.SetErrorString(error);
                    _error++;
                    log.Config(error);
                    return(ldapUser);
                }
            }

            _auth++;
            //	Query 1 - Validate User
            int    AD_User_ID  = 0;
            String Value       = null;
            String LdapUser    = null;
            String EMail       = null;
            String Name        = null;
            String Password    = null;
            bool   isActive    = false;
            String EMailVerify = null;  //	 is timestamp
            bool   isUnique    = false;
            //
            String sql = "SELECT AD_User_ID, Value, LdapUser, EMail,"   //	1..4
                         + " Name, Password, IsActive, EMailVerify "
                         + "FROM AD_User "
                         + "WHERE AD_Client_ID=@param1 AND (EMail=@param2 OR Value=@param3 OR LdapUser=@param4)";
            IDataReader idr = null;

            SqlParameter[] param = new SqlParameter[4];
            try
            {
                //pstmt = DataBase.prepareStatement (sql, null);
                //pstmt.setInt (1, AD_Client_ID);
                param[0] = new SqlParameter("@param1", AD_Client_ID);
                //pstmt.setString (2, usr);
                param[1] = new SqlParameter("@param2", usr);
                //pstmt.setString (3, usr);
                param[2] = new SqlParameter("@param3", usr);
                //pstmt.setString (4, usr);
                param[3] = new SqlParameter("@param4", usr);
                idr      = DataBase.DB.ExecuteReader(sql, param, null);
                if (idr.Read())
                {
                    AD_User_ID = Utility.Util.GetValueOfInt(idr[0]);     // rs.getInt(1);
                    Value      = Utility.Util.GetValueOfString(idr[1]);  // rs.getString(2);
                    LdapUser   = Utility.Util.GetValueOfString(idr[2]);  //rs.getString(3);
                    EMail      = Utility.Util.GetValueOfString(idr[3]);  //rs.getString(4);
                    //
                    Name        = Utility.Util.GetValueOfString(idr[4]); // rs.getString(5);
                    Password    = Utility.Util.GetValueOfString(idr[5]); //rs.getString(6);
                    isActive    = "Y".Equals(Utility.Util.GetValueOfString(idr[6]));
                    EMailVerify = Utility.Util.GetValueOfString(idr[7]);
                    isUnique    = idr.NextResult();//  rs.next();
                }
                idr.Close();
            }
            catch (Exception e)
            {
                if (idr != null)
                {
                    idr.Close();
                }

                log.Log(Level.SEVERE, sql, e);
                error = "System Error";
            }
            if (error != null)
            {
                _error++;
                ldapUser.SetErrorString(error);
                return(ldapUser);
            }
            //
            if (AD_User_ID == 0)
            {
                error = "@NotFound@ User="******"User not found - " + usr;
            }
            else if (!isActive)
            {
                error = "@NotFound@ User="******"User not active - " + usr;
            }
            else if (EMailVerify == null)
            {
                error = "@UserNotVerified@ User="******"User EMail not verified - " + usr;
            }
            else if (usr.ToLower().Equals(LdapUser.ToLower()))
            {
                info = "User verified - Ldap=" + usr
                       + (isUnique ? "" : " - Not Unique");
            }
            else if (usr.ToLower().Equals(Value.ToLower()))// usr.equalsIgnoreCase(Value))
            {
                info = "User verified - Value=" + usr
                       + (isUnique ? "" : " - Not Unique");
            }
            else if (usr.ToLower().Equals(EMail.ToLower()))//usr.equalsIgnoreCase(EMail))
            {
                info = "User verified - EMail=" + usr
                       + (isUnique ? "" : " - Not Unique");
            }
            else
            {
                info = "User verified ?? " + usr
                       + " - Name=" + Name
                       + ", Ldap=" + LdapUser + ", Value=" + Value
                       + (isUnique ? "" : " - Not Unique");
            }

            //	Error
            if (error != null)  //	should use Language of the User
            {
                LogAccess(AD_Client_ID, AD_User_ID, R_InterestArea_ID, 0, info, error,
                          remoteHost, remoteAddr);
                ldapUser.SetErrorString(Msg.Translate(GetCtx(), error));
                return(ldapUser);
            }
            //	User Info
            ldapUser.SetOrg(o);
            ldapUser.SetOrgUnit(ou);
            ldapUser.SetUserId(usr);
            ldapUser.SetPassword(Password);
            //	Done
            if (R_InterestArea_ID == 0 && M_Product_ID == 0)
            {
                LogAccess(AD_Client_ID, AD_User_ID, 0, 0, info, null,
                          remoteHost, remoteAddr);
                return(ldapUser);
            }

            if (M_Product_ID != 0)
            {
                return(AuthenticateAsset(ldapUser,
                                         AD_User_ID, usr, M_Product_ID,
                                         AD_Client_ID, remoteHost, remoteAddr));
            }

            return(AuthenticateSubscription(ldapUser,
                                            AD_User_ID, usr, R_InterestArea_ID,
                                            AD_Client_ID, remoteHost, remoteAddr));
        }       //	authenticate