Esempio n. 1
0
        /// <summary>Method create an access token for current user.</summary>
        /// <param name="userId">Id of user to create token.</param>
        /// <returns>Created access toker, or null if was error.</returns>
        /// <exception cref="InsertDbDataException"/>
        /// <exception cref="InvalidOperationException"/>
        public string CreateAccessToken(decimal userId)
        {
            string   token = string.Empty;
            DateTime now   = DateTime.UtcNow;

            using (var context = _ContextGenerator.GenerateContext())
            {
                DeleteOldUserAccessTokens(userId, now, context);
                User currentUser = _UserManager.GetUserById(userId);
                if (currentUser != null)
                {
                    token = GenerateAccessToken(now);
                    User_Access access = new User_Access()
                    {
                        Access_Token    = token,
                        Date_Creation   = now,
                        Date_Expiration = now.AddDays(1),
                        ID_User         = currentUser.ID_User
                    };
                    try
                    {
                        context.User_Access.Add(access);
                        context.SaveChanges();
                    }
                    catch (DbEntityValidationException ex)
                    {
                        context.User_Access.Remove(access);
                        List <ValidationError> validationErrors = ex.RetrieveValidationsErrors();
                        throw new InsertDbDataException(validationErrors);
                    }
                    catch (DbUpdateException ex)
                    {
                        context.User_Access.Remove(access);
                        throw new InvalidOperationException("Unable to save user-access", ex);
                    }
                }
            }
            return(token);
        }
Esempio n. 2
0
        /// <summary>Method retrieve a users from th DB by it ids.</summary>
        /// <param name="userIds">Ids of users to retrieve.</param>
        /// <returns>List with retrieving results.</returns>
        /// <exception cref="InvalidOperationException">No users found.</exception>
        private IEnumerable <User> GetUsersByIds(IEnumerable <decimal> userIds)
        {
            List <User> users = new List <User>();

            foreach (var userId in userIds)
            {
                User usr = _UserManager.GetUserById(userId);
                if (usr != null)
                {
                    users.Add(usr);
                }
            }
            if (users.Count < 1)
            {
                throw new InvalidOperationException("Users for project not found.");
            }
            return(users);
        }