private static void ConfigAuthSession(BaseUser user, WeatherClientType clientType) { // clean all existing Cache //Mobizone.TSIC.Cache.DataCache.RemoveAllCacheBySession(); var session = SessionFactory.Create <IBLSessionPersisiter>(); var clientSession = SessionFactory.Create <IClientSessionPersisiter>(); session.RemoveSession(); clientSession.RemoveSession(); IBaseUserBL bl = BLLFactory.Create <IBaseUserBL>(); session.UserID = user.ID; session.BaseEmployee = user.BASE_EMPLOYEE; session.ProdType = 1; //登录成功默认PND //var division = BLLFactory.Create<IBaseDictBL>().GetItemNameByCached(BaseDictType.DictTypeDivision,user.BaseEmployee.DIVISION); //if(division == BaseDictType.DivisionTypeMND) { // session.ProdType = 2; //} clientSession.ClientType = clientType; //session.UserType = user.UserType; session.Roles = ExpendRole(bl.GetUserRoles(user.ID)); // load all the role //// Data Auth //var orgBL = BLLFactory.Create<IBaseOrgBL>(); ISet <decimal> authOrg = new HashSet <decimal>(); //var splitDate = DateTime.Parse("2012-03-07 03:00:00"); //if(user.Updated == null || user.Updated < splitDate) { // // 老式的ETMS授权 // authOrg = orgBL.FilterAbtCityOrgByCached(user.OrgAuth); //} else { // authOrg = orgBL.ExpendOrgToAbtCityByCached(user.OrgAuth); //} //var userOrg = user.BaseEmployee.OrgID; //if(null != userOrg) { // authOrg.Add(userOrg.Value); // //展开到城市一级 // session.DataCenterCityAuth = orgBL.ExpendOrgToCenterCityByCached(userOrg.Value); //} //// Data Auth: PGS 自动授权 所有PG所在雅培城市 //if(session.Roles.Contains(WeatherRole.PGM_PGS)) { // var empBL = BLLFactory.Create<IBaseEmployeeBL>(); // var orgs = empBL.GetChildAbtCityBind(session.BaseEmployee.ID); // authOrg.AddAll(orgs); //} session.DataOrgAuth = authOrg; }
/* * public bool SetAuthSessionInWeb(string username, string password) { * var bl = BLLFactory.Create<IBaseUserBL>(); * var user = bl.GetUserInWeb(username, password); * if (null == user) { * return false; * } * ConfigAuthSession(user); * return true; * } * * * public bool SetAuthSessionInWap(string username, string password) { * var bl = BLLFactory.Create<IBaseUserBL>(); * var user = bl.GetUserInWap(username, password); * if (null == user) { * return false; * } * ConfigAuthSession(user); * return true; * }*/ public bool SetAuthSession(string username, string password, WeatherClientType clientType, string[] loginOnlyIfRole = null, string[] extrRoles = null) { var bl = BLLFactory.Create <IBaseUserBL>(); var user = bl.GetUserInWeb(username, password); if (null == user) { return(false); } ConfigAuthSession(user, clientType); var session = SessionFactory.Create <IBLSessionPersisiter>(); if (loginOnlyIfRole != null) { var identity = new WeatherIdentity(session.UserID); if (loginOnlyIfRole.All(role => !this.UserInRole(identity, role))) { RemoveSession(); return(false); } } //string type = UserLog.LoginClientTypeWap; //switch (clientType) { // case WeatherClientType.Wap: // type = UserLog.LoginClientTypeWap; // break; // case WeatherClientType.Web: // type = UserLog.LoginClientTypeWeb; // break; // case WeatherClientType.iPhone: // type = UserLog.LoginClientTypeiPhone; // break; // case WeatherClientType.Android: // type = UserLog.LoginClientTypeAndroid; // break; //} if (extrRoles != null) { session.Roles.AddAll(extrRoles); } //Bus.ServiceBus.Publish(new Bus.Messages.LoginMsg() { // EmpID = (int)session.BaseEmployee.ID, // Time = Util.RPCNow, // ClientType = type, //}); return(true); }
public bool SetAuthSession(int userID, WeatherClientType clientType = WeatherClientType.Wap, string[] extrRoles = null) { var bl = BLLFactory.Create <IBaseUserBL>(); var user = bl.GetUserByID(userID); if (null == user) { return(false); } ConfigAuthSession(user, clientType); if (extrRoles != null) { var session = SessionFactory.Create <IBLSessionPersisiter>(); session.Roles.AddAll(extrRoles); } return(true); }