Matrix Science header

ms_security_session.hpp

00001 /*
00002 ##############################################################################
00003 # file: ms_security_session.hpp                                              #
00004 # 'msparser' toolkit                                                         #
00005 # Encapsulates a mascot session as used in authentication                    #
00006 ##############################################################################
00007 # COPYRIGHT NOTICE                                                           #
00008 # Copyright 1998-2004 Matrix Science Limited  All Rights Reserved.           #
00009 #                                                                            #
00010 ##############################################################################
00011 #    $Archive:: /MowseBranches/ms_mascotresfile_1.2/include/ms_mascotresfi $ #
00012 #     $Author: villek@matrixscience.com $ #
00013 #       $Date: 2018-07-30 16:23:53 +0100 $ #
00014 #   $Revision: 1b450440f9c97e1e41d0fc6016a27d68951d4532 | MSPARSER_REL_2_8_1-0-gea32989045 $ #
00015 # $NoKeywords::                                                            $ #
00016 ##############################################################################
00017 */
00018 
00019 #if !defined(mascot_session_DA3EC794_90F8_4c4f_AD5D_13C3B6971A51__INCLUDED_)
00020 #define mascot_session_DA3EC794_90F8_4c4f_AD5D_13C3B6971A51__INCLUDED_
00021 
00022 
00023 // Includes from the standard template library
00024 #include <string>
00025 #include <set>
00026 #include <vector>
00027 #include <map>
00028 #include <time.h>
00029 
00030 namespace matrix_science {
00035     class ms_security;
00036     class ms_security_options;
00037 
00039 
00122     class MS_MASCOTRESFILE_API ms_session : public ms_errors
00123     {
00124     public:
00126         ms_session(const std::string session_id = "");
00127 
00129         ms_session(const std::string userName, 
00130                    const std::string userPassword);
00131 
00133         ms_session(const std::string userName,
00134                    const std::string connectionID,
00135                    const std::string database);
00136 
00138         ms_session(const int timeout, const std::string prefix);
00139 
00140 
00141 #if !defined(DOXYGEN_SHOULD_SKIP_THIS)
00142         ms_session(const ms_session& src);
00143 #endif
00144         /* SWIG function dispatcher fails in Perl 5.12 for some reason, and
00145          * tries to use ms_session(const ms_security&, const std::string&) as
00146          * the constructor for cases such as ms_session(300, "score_gif")...
00147          * This constructor is supposed to be for internal use anyway, which
00148          * is why it is defined out.
00149          */
00150 #if !defined(DOXYGEN_SHOULD_SKIP_THIS) && !defined(SWIG)
00151         ms_session(const ms_security &sec,
00152                    const std::string &session_id);
00153         ms_session(const ms_security &sec,
00154                    const ms_user & user);
00155         ms_session& operator =(const ms_session& right);
00156 #endif 
00157 
00158         ~ms_session();
00159 
00160     public:
00162         std::string getID() const;
00163 
00165         int getUserID() const;
00166 
00168         std::string getUserName() const;
00169 
00171         std::string getFullUserName() const;
00172 
00174         std::string getEmailAddress() const;
00175 
00177         bool isSecurityEnabled() const;
00178 
00180         time_t getLastAccessed() const;
00181 
00183         time_t getTimeout() const;
00184 
00186         std::string getIPAddress() const;
00187 
00189         matrix_science::ms_security_tasks getPermittedTasks() const;
00190 
00192         bool setPermittedTasks(const matrix_science::ms_security_tasks & val);
00193 
00195         std::map<std::string, std::string> getParams() const;
00196 
00198         bool isPermitted(const int taskID) const;
00199 
00201         bool isPermitted_long(const int taskID, const long value) const;
00202 
00204         bool isPermitted_double(const int taskID, const double value) const;
00205 
00207         bool isPermitted_string(const int taskID, const std::string value) const;
00208 
00210         bool isFastaPermitted(const std::string database) const;
00211 
00213         bool canResultsFileBeViewed(const int userID) const;
00214 
00216         bool saveStringParam(const std::string name, const std::string param);
00217 
00219         bool saveIntParam(const std::string name, int param);
00220 
00222         bool saveLongParam(const std::string name, long param);
00223 
00225         bool saveTimeParam(const std::string name, time_t param);
00226 
00228         bool saveDoubleParam(const std::string name, double param);
00229 
00231         bool saveBoolParam(const std::string name, bool param);
00232 
00233 #ifndef SWIG
00234 
00235         bool getStringParam(const std::string name, std::string & param) const;
00236 #endif
00237 
00238         std::string getStringParam(const std::string name) const;
00239 
00241         bool getIntParam(const std::string name, int & param) const;
00242 
00244         int getIntParam(const std::string name) const;
00245 
00247         bool getLongParam(const std::string name, long & param) const;
00248 
00250         long getLongParam(const std::string name) const;
00251 
00253         bool getTimeParam(const std::string name, time_t & param) const;
00254 
00256         time_t getTimeParam(const std::string name) const;
00257 
00259         bool getDoubleParam(const std::string name, double & param) const;
00260 
00262         double getDoubleParam(const std::string name) const;
00263 
00265         bool getBoolParam(const std::string name, bool & param) const;
00266 
00268         bool clearParam(const std::string name);
00269 
00271         bool destroy();
00272 
00274         bool isTimedOut() const;
00275 
00277         matrix_science::ms_user::usertype getUserType() const;
00278 
00280         bool update(const ms_security & sec);
00281 
00283         std::vector<int> getSpoofableUsers() const;
00284     
00285     private:
00286         typedef std::map<std::string, std::string> param_t;
00287         std::string sessionID_;
00288         param_t  params_;
00289         param_t  customParams_;
00290         typedef std::set<std::string> cpIdentifier_t;
00291         cpIdentifier_t systemIdentifiers_;
00292         ms_security_tasks permittedTasks_;
00293         bool saveParamShouldSaveFile_;
00294         bool allowParamAndFileSaving_;
00295 
00296         void init();
00297         bool loadSessionFromFile(const ms_security * const sec);
00298         bool saveSessionToFile(const ms_security * const sec);
00299         void setDisabledSession(const ms_security_options & opts);
00300         bool setCommandLineSession(const ms_security_options & secOpt);
00301         bool setGuestSession();
00302         bool doesSessionFileExist(const std::string sess);
00303         bool getAllParams(const ms_user & u, const ms_security & sec);
00304         std::string getSessionIDFromUser(const ms_user & user);
00305         std::string getWebSvrAuthSessionID(std::string userName = "");
00306         bool checkIPAddressOrComputerName(const std::string ipAddress,
00307                                           std::string & sessionID);
00308         bool checkAgentString(std::string & sessionID);
00309         bool validateIntegraPassword(const ms_user & u, 
00310                                      const ms_security_options & secOpt,
00311                                      const std::string & userPassword,
00312                                      std::string & session_id,
00313                                      int & errorFlag) const;
00314         bool verifyIntegraConnection() const;
00315         bool isSessionIdentical(const ms_session & sess) const;
00316         void copyFrom(const ms_session * src);
00317         void createSessionFromID(const std::string session_id);
00318     }; // end of security_group
00320 }
00321 #endif // !defined(mascot_session_DA3EC794_90F8_4c4f_AD5D_13C3B6971A51__INCLUDED_)

Copyright © 2022 Matrix Science Ltd.  All Rights Reserved. Generated on Thu Mar 31 2022 01:12:30