コード例 #1
0
        /// <summary>
        /// Returns the user cache of the given user.  If the user does not exist in CAM it is added.  If
        /// the user is invalid according to cam no permissions are cached.
        /// </summary>
        /// <param name="user">The user to return cache for.</param>
        /// <returns>The user's cache.</returns>
        public UserCache GetUserCache(IWebApiUser user)
        {
            Contract.Requires(user != null, "The user must not be null.");
            var userCache = cacheService.GetUserCache(user);

            logger.Info("User [{0}] is cached:  {1}.", user, userCache != null);
            if (userCache == null)
            {
                logger.Info("Caching user [{0}] information.", user);
                var camUser     = userService.GetUserById(user.Id);
                var isValidUser = false;
                IEnumerable <IPermission> permissions = new List <IPermission>();
                if (camUser != null)
                {
                    isValidUser = userService.IsUserValid(user.Id);
                    if (isValidUser)
                    {
                        permissions = GetUserPermissions(camUser.PrincipalId);
                    }
                }
                else
                {
                    camUser = new User();
                }
                userCache = new UserCache(user, camUser, isValidUser, permissions);
                cacheService.Add(userCache);
                return(userCache);
            }
            else
            {
                return(userCache);
            }
        }
コード例 #2
0
        public async Task <ActionResult> Index(CancellationToken cancellationToken)
        {
            ViewData[Constant.FormTitle] = "ADD WEB API USER";
            IWebApiUser model = await _service.IndexAsync(this.HttpContext.ApplicationInstance.Context, GetCanellationToken(cancellationToken));

            return(View(model));
        }
コード例 #3
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="user"></param>
 /// <param name="sevisUsername"></param>
 /// <param name="sevisOrgId"></param>
 /// <returns></returns>
 public bool HasSevisUserAccount(IWebApiUser user, string sevisUsername, string sevisOrgId)
 {
     Contract.Requires(user != null, "The user must not be null.");
     Contract.Requires(sevisUsername != null, "The sevis username must not be null.");
     Contract.Requires(sevisOrgId != null, "The sevis org id must not be null.");
     return(true);
 }
コード例 #4
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="user"></param>
 /// <param name="sevisUsername"></param>
 /// <param name="sevisOrgId"></param>
 /// <returns></returns>
 public Task <bool> HasSevisUserAccountAsync(IWebApiUser user, string sevisUsername, string sevisOrgId)
 {
     Contract.Requires(user != null, "The user must not be null.");
     Contract.Requires(sevisUsername != null, "The sevis username must not be null.");
     Contract.Requires(sevisOrgId != null, "The sevis org id must not be null.");
     return(Task.FromResult <bool>(true));
 }
コード例 #5
0
        /// <summary>
        /// Returns the CAM principal Id of the user.
        /// </summary>
        /// <param name="user">The user.</param>
        /// <returns>The principal id of the user.</returns>
        public async Task <int> GetPrincipalIdAsync(IWebApiUser user)
        {
            var principalId = (await GetUserCacheAsync(user)).CamPrincipalId;

            logger.Info("User [{0}] has cam principal id:  {1}", user, principalId);
            return(principalId);
        }
コード例 #6
0
        /// <summary>
        /// Returns the CAM principal Id of the user.
        /// </summary>
        /// <param name="user">The user.</param>
        /// <returns>The principal id of the user.</returns>
        public int GetPrincipalId(IWebApiUser user)
        {
            var principalId = GetUserCache(user).CamPrincipalId;

            logger.Info("User [{0}] has cam principal id:  {1}", user, principalId);
            return(principalId);
        }
コード例 #7
0
        /// <summary>
        /// Returns true if the user is valid according to CAM.
        /// </summary>
        /// <param name="user">The user to check.</param>
        /// <returns>True, if the user is valid according to cam.</returns>
        public bool IsUserValid(IWebApiUser user)
        {
            var cache = GetUserCache(user);
            var valid = cache.IsValidCamUser;

            logger.Info("User {0} is valid in CAM:  {1}", user, valid);
            return(valid);
        }
コード例 #8
0
        /// <summary>
        /// Returns true if the user is valid according to CAM.
        /// </summary>
        /// <param name="user">The user to check.</param>
        /// <returns>True, if the user is valid according to cam.</returns>
        public async Task <bool> IsUserValidAsync(IWebApiUser user)
        {
            var cache = await GetUserCacheAsync(user);

            var valid = cache.IsValidCamUser;

            logger.Info("User {0} is valid in CAM:  {1}", user, valid);
            return(valid);
        }
コード例 #9
0
ファイル: UserCache.cs プロジェクト: thomaspmorgan/eca-kmt2
 /// <summary>
 /// Creates a new user cache.  If the permissions are not provided, the Permissions will be initialized with an empty list.
 /// </summary>
 /// <param name="user">The user.</param>
 /// <param name="camUser">The cam business layer user.</param>
 /// <param name="isValidCamUser">True, if the user is valid according to CAM.</param>
 /// <param name="permissions">The permissions of the user.</param>
 public UserCache(IWebApiUser user, User camUser, bool isValidCamUser, IEnumerable <IPermission> permissions = null)
 {
     Contract.Requires(user != null, "The user must not be null.");
     Contract.Requires(camUser != null, "The cam user must not be null.");
     this.UserId            = user.Id;
     this.Permissions       = permissions ?? new List <IPermission>();
     this.DateCached        = DateTime.UtcNow;
     this.UserName          = user.GetUsername();
     this.CamPrincipalId    = camUser.PrincipalId;
     this.IsValidCamUser    = isValidCamUser;
     this.SevisUserAccounts = camUser.SevisUserAccounts.OrderBy(x => x.Username).ToList();
 }
コード例 #10
0
        /// <summary>
        /// Returns the user's cache item.  If the cache item does not exist or has expired it is reloaded.
        /// </summary>
        /// <param name="user">The user to get the cache for.</param>
        /// <returns>The UserCache instance.</returns>
        public UserCache GetUserCache(IWebApiUser user)
        {
            var cachedObject = cache.Get(GetKey(user));

            if (cachedObject == null)
            {
                return(null);
            }
            else
            {
                return((UserCache)cachedObject);
            }
        }
コード例 #11
0
        /// <summary>
        /// Allows a user to impersonate another user by permissions.
        /// </summary>
        /// <param name="impersonator">The user who will be impersonating another.</param>
        /// <param name="idOfUserToImpersonate">The id of user to impersonate.</param>
        public void Impersonate(IWebApiUser impersonator, Guid idOfUserToImpersonate)
        {
            logger.Info("User [{0}] is going to impersonate user with id [{1}].", impersonator, idOfUserToImpersonate);
            BeforeImpersonateUser(impersonator.Id);
            var  impersonatedUser            = new ImpersonatedUser(impersonatorUserId: impersonator.Id, impersonatedUserId: idOfUserToImpersonate, impersonatorUserName: impersonator.GetUsername());
            bool isImpersonatedUserValid     = userService.IsUserValid(idOfUserToImpersonate);
            bool isImpersonatorValid         = userService.IsUserValid(impersonator.Id);
            var  impersonatedCamUser         = userService.GetUserById(idOfUserToImpersonate);
            var  impersonatorCamUser         = userService.GetUserById(impersonator.Id);
            var  impersonatedUserPermissions = GetPermissions(impersonatedUser);

            CacheImpersonatedUser(impersonator, impersonatorCamUser, isImpersonatedUserValid, impersonatedUserPermissions.ToList());
            logger.Info("User [{0}] is now impersonating user with id [{1}].", impersonator, idOfUserToImpersonate);
        }
コード例 #12
0
        public async Task <ActionResult> IndexEdit(string hdnWAUserId, CancellationToken cancellationToken)
        {
            if (System.Convert.ToInt64(hdnWAUserId) > 0)
            {
                //ViewData[Constant.HeaderTitle] = "User";
                ViewData[Constant.FormTitle] = "EDIT WEB API USER";
                IWebApiUser model = await _service.IndexAsync(this.HttpContext.ApplicationInstance.Context, Convert.ToInt64(hdnWAUserId), GetCanellationToken(cancellationToken));

                ViewData[Constant.QuerySuccess] = HttpContext.Items[Constant.QuerySuccess];
                return(View("Index", model));
            }
            else
            {
                return(Redirect("~/WebApiUserSearch/Index"));
            }
        }
コード例 #13
0
 /// <summary>
 /// Removes the user from the cache.
 /// </summary>
 /// <param name="user">The user to remove.</param>
 public void Remove(IWebApiUser user)
 {
     Remove(user.Id);
 }
コード例 #14
0
        /// <summary>
        /// Returns a business user instances from the given IWebApiUser.
        /// </summary>
        /// <param name="user">The user.</param>
        /// <returns>The business user instance.</returns>
        public Business.Service.User GetBusinessUser(IWebApiUser user)
        {
            var userCache = GetUserCache(user);

            return(new Business.Service.User(userCache.CamPrincipalId));
        }
コード例 #15
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="user"></param>
 /// <returns></returns>
 public Task <bool> IsUserValidAsync(IWebApiUser user)
 {
     Contract.Requires(user != null, "The user must not be null.");
     return(Task.FromResult <bool>(false));
 }
コード例 #16
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="impersonator"></param>
 /// <param name="idOfUserToImpersonate"></param>
 public void Impersonate(IWebApiUser impersonator, Guid idOfUserToImpersonate)
 {
     Contract.Requires(impersonator != null, "The impersonator must not be null.");
 }
コード例 #17
0
        /// <summary>
        /// Returns true, if the given user has the sevis user account credentials.
        /// </summary>
        /// <param name="user">The user to test.</param>
        /// <param name="sevisUsername">The sevis username.</param>
        /// <param name="sevisOrgId">The sevis org id.</param>
        /// <returns>True, if the given user has the given sevis credentials, otherwise, false.</returns>
        public async Task <bool> HasSevisUserAccountAsync(IWebApiUser user, string sevisUsername, string sevisOrgId)
        {
            var cache = await GetUserCacheAsync(user);

            return(HasSevisUserAccount(cache, sevisUsername, sevisOrgId));
        }
コード例 #18
0
        /// <summary>
        /// Returns true, if the given user has the sevis user account credentials.
        /// </summary>
        /// <param name="user">The user to test.</param>
        /// <param name="sevisUsername">The sevis username.</param>
        /// <param name="sevisOrgId">The sevis org id.</param>
        /// <returns>True, if the given user has the given sevis credentials, otherwise, false.</returns>
        public bool HasSevisUserAccount(IWebApiUser user, string sevisUsername, string sevisOrgId)
        {
            var cache = GetUserCache(user);

            return(HasSevisUserAccount(cache, sevisUsername, sevisOrgId));
        }
コード例 #19
0
        private void CacheImpersonatedUser(IWebApiUser impersonator, User impersonatorCamUser, bool isImpersonatedUserValid, IEnumerable <IPermission> impersonatedUserPermissions)
        {
            var modifiedCache = new UserCache(impersonator, impersonatorCamUser, isImpersonatedUserValid, impersonatedUserPermissions.ToList());

            this.cacheService.Add(modifiedCache);
        }
コード例 #20
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="user"></param>
 /// <returns></returns>
 public System.Threading.Tasks.Task <UserCache> GetUserCacheAsync(IWebApiUser user)
 {
     Contract.Requires(user != null, "The user must not be null.");
     return(Task.FromResult <UserCache>(null));
 }
コード例 #21
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="user"></param>
 /// <returns></returns>
 public bool IsUserValid(IWebApiUser user)
 {
     Contract.Requires(user != null, "The user must not be null.");
     return(false);
 }
コード例 #22
0
 /// <summary>
 /// Returns the string key to use for the cache.
 /// </summary>
 /// <param name="user">The user to retrieve a key for.</param>
 /// <returns>The user id as a string to be used as a key for the cache.</returns>
 public string GetKey(IWebApiUser user)
 {
     Contract.Requires(user != null, "The user must not be null.");
     return(GetKey(user.Id));
 }
コード例 #23
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="impersonator"></param>
 /// <param name="idOfUserToImpersonate"></param>
 /// <returns></returns>
 public Task ImpersonateAsync(IWebApiUser impersonator, Guid idOfUserToImpersonate)
 {
     Contract.Requires(impersonator != null, "The impersonator must not be null.");
     return(Task.FromResult <object>(null));
 }
コード例 #24
0
 /// <summary>
 /// Returns the permissions of the given user.
 /// </summary>
 /// <param name="user">The user.</param>
 /// <returns>The permissions.</returns>
 public IEnumerable <IPermission> GetPermissions(IWebApiUser user)
 {
     return(GetUserCache(user).Permissions);
 }
コード例 #25
0
 /// <summary>
 /// Returns the permissions of the given user.
 /// </summary>
 /// <param name="user">The user.</param>
 /// <returns>The permissions.</returns>
 public async Task <IEnumerable <IPermission> > GetPermissionsAsync(IWebApiUser user)
 {
     return((await GetUserCacheAsync(user)).Permissions);
 }
コード例 #26
0
        /// <summary>
        /// Returns a business user instances from the given IWebApiUser.
        /// </summary>
        /// <param name="user">The user.</param>
        /// <returns>The business user instance.</returns>
        public async Task <Business.Service.User> GetBusinessUserAsync(IWebApiUser user)
        {
            var userCache = await GetUserCacheAsync(user);

            return(new Business.Service.User(userCache.CamPrincipalId));
        }
コード例 #27
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="user"></param>
 /// <returns></returns>
 public UserCache GetUserCache(IWebApiUser user)
 {
     Contract.Requires(user != null, "The user must not be null.");
     return(null);
 }
コード例 #28
0
 /// <summary>
 /// Removes the given user's cache.
 /// </summary>
 /// <param name="user">the user to clear.</param>
 public void Clear(IWebApiUser user)
 {
     Clear(user.Id);
 }
コード例 #29
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="user"></param>
 public void Remove(IWebApiUser user)
 {
     Contract.Requires(user != null, "The user must not be null.");
 }
コード例 #30
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="user"></param>
 /// <returns></returns>
 public int GetPrincipalId(IWebApiUser user)
 {
     Contract.Requires(user != null, "The user must not be null.");
     return(0);
 }