예제 #1
0
        public DefaultOfflineManager(ILockService lockService, CurrentUserService.IUser currentUser)
        {
            Contract.Requires <ArgumentNullException>(lockService != null);
            Contract.Requires <ArgumentNullException>(currentUser != null);

            _lockService = lockService;
            _currentUser = currentUser;
        }
        /// <summary>
        /// Получить пользователя в текущем окружении.
        /// </summary>
        /// <returns>
        /// Если текущее приложение исполняется в веб окружении,
        /// то вернет учетные данные о текущем web-пользователе, иначе о windows-пользователе.
        /// </returns>
        private CurrentUserService.IUser GetUser()
        {
            if (HttpContext.Current != null)
            {
                return(_webHttpUser ?? (_webHttpUser = new CurrentWebHttpUser()));
            }

            return(_winUser ?? (_winUser = new CurrentWindowsUser()));
        }
        /// <summary>
        /// Returns user login in "DOMAIN\login" format (<see href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa380525(v=vs.85).aspx"/>).
        /// "DOMAIN" - NetBIOS domain name; "login" - user account name.
        /// </summary>
        /// <param name="user">User for building login.</param>
        /// <returns>User login in "DOMAIN\login" format.</returns>
        public static string GetDownLevelLogonName(this CurrentUserService.IUser user)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }

            return(string.Concat(user.Domain, "\\", user.Login));
        }