#pragma once #include "GlobalDefine.h" #include "module.h" #define ACCOUNT_NoLogin "No Login" #define ACCOUNT_Operator "Operator" #define ACCOUNT_OperatorAdmin "OperatorAdmin" #define ACCOUNT_Engineer "Engineer" #define ACCOUNT_Technics "Technics" #define ACCOUNT_Factory "Factory" enum eAuthorityType { _Authority_NoLogin = 0,//未登录 _Authority_Operator,//操作员 _Authority_OperatorAdmin,//产线管理员 _Authority_Engineer,//设备工程师 _Authority_Technics,//工艺工程师 _Authority_Factory,//厂家 }; //账号 class CAccount { public: CAccount() { m_Authority = _Authority_NoLogin; } void Serialize(CArchive& ar) { if(ar.IsStoring()) { ar<<(int)m_Authority; ar<>tmp; m_Authority = (eAuthorityType)tmp; ar>>m_Name; ar>>m_PassWord; } } public: eAuthorityType m_Authority;//权限 CString m_Name;//用户名 CString m_PassWord;//密码 }; class CAuthorityPar { public: CAuthorityPar(void) { m_bOperator = false;//操作员 m_bOperatorAdmin = false;//产线管理员 m_bEngineer = false;//设备工程师 m_bTechnics = false;//工艺工程师 }; public: CString m_AuthorityName;//参数名称 CString m_ShowName;//显示用名称 bool m_bOperator;//操作员 bool m_bOperatorAdmin;//产线管理员 bool m_bEngineer;//设备工程师 bool m_bTechnics;//工艺工程师 }; enum eUserCtrlType { _UserCtrlType_AddUser = 0,//添加账号 _UserCtrlType_DelUser,//删除账号 _UserCtrlType_login,//登录 _UserCtrlType_logout,//退出登录 }; class CUserCtrlPar { public: CUserCtrlPar(void) { }; public: eUserCtrlType m_UserCtrlType;//操作类型 CString m_UserName;//用户名 eAuthorityType m_AuthorityType;//权限类型 }; //权限管理 class CAuthorityMgr:public CModule { public: CAuthorityMgr(void); ~CAuthorityMgr(void); virtual void OnAppInitialize(); virtual MODULE GetModuleType(){return _AUTHORITY_PROP;}; virtual CMFCPropertyGridProperty *CreatGridProperty(); void SetAuthority(eAuthorityType authority){m_CurAuthority = authority;};//设置当前权限 bool CheckAuthority(eAuthorityType authority,bool bShowMsgbox = false);//检查当前权限 bool CheckAuthorityByName(CString AuthorityName,bool bShowMsgbox); eAuthorityType GetCurAuthority(){return m_CurAuthority;}; void AddAccount(CAccount Account); bool Login(CString name,CString PassWord); CString GetAccountName(eAuthorityType authority); void SaveOrLoad(bool bSave); void InsertToList(CListCtrl &List); void DelUser(int idx); CString GetCurAccountName(); CString GetCurUserName(){return m_CurUserName;}; bool IsAutoFactory(){return m_AutoFactory;}; void Lock(); bool IsLogin(); void InitAuthorityParList(CListCtrl &List); void InitAuthorityTypeComb(CComboBox &Combo); void UpdateAuthorityPar(CListCtrl &List,int AuthorityType); void UpdateAuthorityParList(CListCtrl &List,int AuthorityType); void SaveAuthorityParaFile(); void SetbLoginDlgOpen(bool b){m_bLoginDlgOpen = b;}; bool IsbLoginDlgOpen(){return m_bLoginDlgOpen;}; private: void SaveOrLoadExt(CArchive &ar); void SortUserVec(); void ReadAuthorityParaFile(); void SaveUserCtrlHistory(CUserCtrlPar UserCtrlPar); private: eAuthorityType m_CurAuthority;//当前权限 CString m_CurUserName;//当前用户名 vector m_UserVec;//所有的用户 bool m_AutoFactory;//打开软件自动升级到管理员权限 bool m_bLoginDlgOpen;//是否正在打开登录对话框 vector m_AuthorityParVec; vector m_TmpAuthorityParVec;//当前操作的参数 }; extern CAuthorityMgr *gAuthorityMgr;