Beispiel #1
0
 def addOperationLog(self,
                     cmsOperationLog,
                     operation_cd,
                     object_id='',
                     object_type='',
                     note=''):
     cmsOperationLog.operation_date = datetime.now()
     cmsOperationLog.operation_cd = operation_cd
     cmsOperationLog.object_id = object_id
     cmsOperationLog.object_type = object_type
     cmsOperationLog.ip_addr = StrUtil.get_ip_addr()
     cmsOperationLog.note = note
     return db.session.add(cmsOperationLog)
Beispiel #2
0
 def saveErrLog(self, error_cd, user_id, db_id='', note=''):
     ip_addr = StrUtil.get_ip_addr()
     url = StrUtil.get_current_url(error_cd)
     db.session.execute(
         'begin ' + self.package_name + '.save_error_log' +
         '(:error_cd, :user_id, :db_id, :ip_addr, :url, :note); ' + 'end;',
         {
             'error_cd': error_cd,
             'user_id': user_id,
             'db_id': db_id,
             'ip_addr': ip_addr,
             'url': url,
             'note': note
         })
Beispiel #3
0
 def saveOperationLog(self,
                      user_id,
                      db_id,
                      operation_cd,
                      object_id='',
                      object_type='',
                      note=''):
     ip_addr = StrUtil.get_ip_addr()
     db.session.execute(
         'begin ' + self.package_name + '.save_operation_log' +
         '(:user_id, :operation_cd, :object_id, :object_type, :db_id, :note, :ip_addr); '
         + 'end;', {
             'user_id': user_id,
             'operation_cd': operation_cd,
             'object_id': object_id,
             'object_type': object_type,
             'db_id': db_id,
             'note': note,
             'ip_addr': ip_addr
         })
Beispiel #4
0
        def wrapper(*args, **kwargs):
            logout_user()
            StrUtil.print_debug('login_required. func=[{}]'.format(
                str(func.__name__)))
            db_id = app.lib.cms_lib.session.get_db_id()
            if not db_id:
                flash('[db_id]パラメータが必要です')
                return redirect(url_for('login'))

            # データベースオブジェクトを取得する
            current_db = app.lib.cms_lib.session.get_current_db(db_id)

            # グローバル変数に設定する
            app.lib.cms_lib.session.current_db = current_db

            if not current_db:
                flash('[db_id:{}]情報を取得できません'.format(db_id))
                return redirect(url_for('login', db_id=db_id))
            StrUtil.print_debug('login_required. cur_db.db_id=[{}]'.format(
                str(current_db.db_id)))

            session_id = app.lib.cms_lib.session.get_session_id(
                current_db.session_cookie_name)
            if session_id:
                StrUtil.print_debug(
                    'login_required. session_cookie_name:{0}  session_id:{1}'.
                    format(current_db.session_cookie_name, session_id))

                # セッションテーブルからユーザIDを取得する(有効期限:一週間)
                cst = CmsSessionTable.get_session_info(
                    current_db.session_cookie_name, session_id)
                if cst is None:
                    flash('invalid user_id or password')
                    return redirect(url_for('login', db_id=db_id))

                # 取得したユーザIDでユーザ情報を取得する
                user = User.query.filter_by(tuid=cst.user_id).first()
                if user is None:
                    flash('invalid user_id or password')
                    return redirect(url_for('login', db_id=db_id))

                # アクセス権限チェック
                pkgIpAddrUtil = PkgIpAddrUtil()
                id_addr = StrUtil.get_ip_addr()
                if not id_addr or not pkgIpAddrUtil.isDbIpAddrVisible(
                        db_id, id_addr):
                    # ログ出力 DBの参照権限なし
                    PkgCmsErrLog().saveErrLog(Const.IP_ADDRESS_ERROR,
                                              user.tuid, str(current_db.db_id))
                    db.session.commit()
                    flash('利用権限がありません')
                    return redirect(url_for('login', db_id=db_id))

                # 参照権限チェック
                pkgCmsSecurity = PkgCmsSecurity()
                if not pkgCmsSecurity.isDbVisible(db_id, user.tuid):
                    # ログ出力 DBの参照権限なし
                    PkgCmsErrLog().saveErrLog(Const.DB_PRIVS_ERROR, user.tuid,
                                              str(current_db.db_id))
                    db.session.commit()
                    flash('このDBを参照する権限がありません')
                    return redirect(url_for('login', db_id=db_id))

                StrUtil.print_debug('login_required. user_id=[{}]'.format(
                    str(current_db.db_id)))
                login_user(user, False)
                session['db_id'] = db_id
            else:
                StrUtil.print_debug('login_required. no session id got.')
                return redirect(
                    UserAuth._get_redirect_url(
                        url_for('login', db_id=current_db.db_id)))

            return func(*args, **kwargs)