/// <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); } }
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)); }
/// <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); }
/// <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)); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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(); }
/// <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); } }
/// <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); }
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")); } }
/// <summary> /// Removes the user from the cache. /// </summary> /// <param name="user">The user to remove.</param> public void Remove(IWebApiUser user) { Remove(user.Id); }
/// <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)); }
/// <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)); }
/// <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."); }
/// <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)); }
/// <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)); }
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); }
/// <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)); }
/// <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); }
/// <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)); }
/// <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)); }
/// <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); }
/// <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); }
/// <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)); }
/// <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); }
/// <summary> /// Removes the given user's cache. /// </summary> /// <param name="user">the user to clear.</param> public void Clear(IWebApiUser user) { Clear(user.Id); }
/// <summary> /// /// </summary> /// <param name="user"></param> public void Remove(IWebApiUser user) { Contract.Requires(user != null, "The user must not be null."); }
/// <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); }