public JsonResult ValidateLoginForDingTalkPC(string state, string code)
        {
            this.Engine.LogWriter.Write("DingTalkPC:进入登录方法-------------------------");
            OThinker.Organization.User currentUser = null;
            UserValidator userValidator            = null;
            string        userImage = string.Empty;
            // 钉钉登录
            IEngine engine = AppUtility.Engine;

            userValidator = UserValidatorFactory.LoginAsDingTalkPCAndReturnUserValidator(state, code);
            object result = null;

            if (userValidator == null)
            {
                result = new
                {
                    Success = false
                };
            }
            else
            {
                currentUser = userValidator.User;
                userImage   = userValidator.ImagePath;
                MobileAccess            mobile     = new MobileAccess();
                MobileAccess.MobileUser mobileUser = mobile.GetMobileUser(userValidator, currentUser, userImage, string.Empty, string.Empty);
                FormsAuthentication.SetAuthCookie(currentUser.Code, false);
                // 当前用户登录
                Session[Sessions.GetUserValidator()] = userValidator;
                result = getCurrentUser();
            }

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Пример #2
0
        public JsonResult GetUserByObjectID(string userCode, string mobileToken, string targetUserId)
        {
            UserValidator sourceUser = this.UserValidator;

            if (sourceUser == null)
            {
                return(Json(new { }, JsonRequestBehavior.AllowGet));
            }

            OThinker.Organization.User user = this.Engine.Organization.GetUnit(targetUserId) as OThinker.Organization.User;
            if (user == null)
            {
                return(Json(new { }, JsonRequestBehavior.AllowGet));
            }

            UserValidator userValidator = UserValidatorFactory.GetUserValidator(this.Engine, user.Code);
            MobileAccess  mobile        = new MobileAccess();

            MobileAccess.MobileUser mobileUser = mobile.GetMobileUser(sourceUser, user, user.ImageUrl, userValidator.DepartmentName, string.Empty);
            var result = new
            {
                MobileUser = mobileUser
            };

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Пример #3
0
        /// <summary>
        /// 获取用户信息
        /// </summary>
        /// <param name="userCode"></param>
        /// <param name="mobileToken"></param>
        /// <param name="targetUserId"></param>
        public JsonResult GetUserByObjectID(string userCode, string targetUserId)
        {
            return(ExecuteFunctionRun(() =>
            {
                OThinker.Organization.User user = this.Engine.Organization.GetUnit(targetUserId) as OThinker.Organization.User;
                if (user == null)
                {
                    Json("", JsonRequestBehavior.AllowGet);
                }
                ;

                UserValidator userValidator = UserValidatorFactory.GetUserValidator(this.Engine, user.Code);
                MobileAccess mobile = new MobileAccess();
                MobileAccess.MobileUser mobileUser = mobile.GetMobileUser(this.UserValidator, user,
                                                                          userValidator.ImagePath,
                                                                          userValidator.DepartmentName,
                                                                          string.Empty);

                var result = new
                {
                    MobileUser = mobileUser
                };
                return Json(result, JsonRequestBehavior.AllowGet);
            }));
        }
Пример #4
0
        /// <summary>
        /// 微信集成登录
        /// </summary>
        /// <param name="context"></param>
        public JsonResult ValidateLoginForWeChat(string state, string code)
        {
            OThinker.Organization.User currentUser = null;
            UserValidator userValidator            = null;
            string        userImage = string.Empty;

            // 微信登录
            if (this.UserValidator != null)
            {
                userValidator = this.UserValidator;
            }
            else
            {
                IEngine engine = AppUtility.Engine;
                userValidator = UserValidatorFactory.LoginAsWeChatReturnUserValidator(state, code);
            }

            object result = null;

            if (userValidator == null)
            {
                result = new
                {
                    Success  = false,
                    Messages = "UserNotExist"
                };
            }
            else
            {
                currentUser = userValidator.User;
                if (currentUser == null ||
                    currentUser.State == State.Inactive ||
                    currentUser.ServiceState == UserServiceState.Dismissed ||
                    currentUser.IsVirtualUser)
                {
                    result = new
                    {
                        Success  = false,
                        Messages = "InvalidUser"
                    };
                }

                userImage = userValidator.ImagePath;
                MobileAccess            mobile     = new MobileAccess();
                MobileAccess.MobileUser mobileUser = mobile.GetMobileUser(userValidator, currentUser, userImage, string.Empty, string.Empty);
                result = new
                {
                    Success        = true,
                    PortalRoot     = this.PortalRoot,
                    MobileUser     = mobileUser,
                    DirectoryUnits = GetDirectoryUnits(currentUser.ObjectID, userValidator)
                };
                FormsAuthentication.SetAuthCookie(currentUser.Code, false);
                // 当前用户登录
                Session[Sessions.GetUserValidator()] = userValidator;
                Session[Sessions.GetWeChatLogin()]   = true;
            }
            return(Json(result, JsonRequestBehavior.AllowGet));
        }
 /// <summary>
 /// 钉钉集成登录
 /// </summary>
 /// <param name="state">引擎编码</param>
 /// <param name="code">临时授权码</param>
 public JsonResult ValidateLoginForDingTalk(string state, string code)
 {
     return(ExecutionActionWithLog("DingTalkController.ValidateLoginForDingTalk", () =>
     {
         OThinker.Organization.User currentUser = null;
         UserValidator userValidator = null;
         string userImage = string.Empty;
         // 钉钉登录
         IEngine engine = AppUtility.Engine;
         userValidator = UserValidatorFactory.LoginAsDingTalkReturnUserValidator(state, code);
         object result = null;
         if (userValidator == null)
         {
             result = new
             {
                 Success = false
             };
         }
         else
         {
             currentUser = userValidator.User;
             userImage = userValidator.ImagePath;
             MobileAccess mobile = new MobileAccess();
             MobileAccess.MobileUser mobileUser = mobile.GetMobileUser(userValidator, currentUser, userImage, string.Empty, string.Empty);
             result = new
             {
                 Success = true,
                 PortalRoot = this.PortalRoot,
                 MobileUser = mobileUser,
                 DirectoryUnits = GetDirectoryUnits(mobileUser.ObjectID, userValidator)
             };
             FormsAuthentication.SetAuthCookie(currentUser.Code, false);
             // 当前用户登录
             Session[Sessions.GetUserValidator()] = userValidator;
             Session[Sessions.GetDingTalkLogin()] = true;
         }
         return Json(result, JsonRequestBehavior.AllowGet);
     }));
 }
        public object LoginInMobile(string userCode,
                                    string password,
                                    string uuid,
                                    string jpushId,
                                    string mobileToken,
                                    string mobileType,
                                    bool isAppLogin)
        {
            OThinker.Organization.User currentUser = null;
            string userImage = string.Empty;

            OThinker.H3.Controllers.UserValidator userValidator = OThinker.H3.Controllers.UserValidatorFactory.GetUserValidator(Engine, userCode);
            password = HttpUtility.UrlDecode(password).Replace("_38;_", "&");

            if (userValidator != null)
            {
                /*
                 * 移动端登录:1.比较账号密码匹配;2.比较uuid和Token是否匹配
                 */

                OThinker.Organization.User user = Engine.Organization.GetUserByCode(userCode);
                if (user == null || user.State == OThinker.Organization.State.Inactive ||
                    user.ServiceState == OThinker.Organization.UserServiceState.Dismissed || user.IsVirtualUser)
                {// 虚拟用户、离职、禁用用户不允许登录
                    return(new { Success = false });
                }

                if (
                    (!string.IsNullOrEmpty(uuid) &&
                     userValidator.User.SID == uuid &&
                     userValidator.User.ValidateMobileToken(mobileToken)) ||
                    userValidator.User.ValidatePassword(password)
                    )
                {
                    currentUser = userValidator.User;
                    userImage   = userValidator.ImagePath;
                }
            }

            if (currentUser == null)
            {// 登录失败
                return(new { Success = false });
            }
            FormsAuthentication.SetAuthCookie(currentUser.Code, false);
            // App 登录则更新 MobileToken 等信息
            if (isAppLogin)
            {
                mobileToken = this.GetMobileToken(currentUser, mobileType, uuid, jpushId);
            }

            OThinker.H3.Controllers.MobileAccess mobile = new OThinker.H3.Controllers.MobileAccess();
            MobileAccess.MobileUser mobileUser          = mobile.GetMobileUser(userValidator, currentUser, userImage, userValidator.DepartmentName, mobileToken);

            var result = new
            {
                Success    = true,
                PortalRoot = this.PortalRoot,
                MobileUser = mobileUser,
                User       = mobileUser
            };

            System.Web.HttpContext.Current.Session[Sessions.GetUserValidator()] = userValidator;

            // 记录登录日志
            this.Engine.UserLogWriter.Write(new Tracking.UserLog()
            {
                LogType        = Tracking.UserLogType.Login,
                SiteType       = Site.PortalType.Mobile,
                ClientPlatform = mobileType,
                ClientAddress  = jpushId,
                DeviceToken    = mobileToken,
                UserCode       = mobileUser.Code,
                MobileSID      = uuid,
                UserID         = mobileUser.ObjectID
            });
            return(result);
        }