Exemple #1
0
        public async Task <AccessKey> AddAccessKey(int userId)
        {
            var user = await _dbContext.UserSet.Include(u => u.AccessKeys)
                       .SingleOrDefaultAsync(s => s.Id == userId)
                       .ConfigureAwait(false);

            if (user == null)
            {
                throw new AccessKeyException($"User id {userId} does not exist");
            }

            if (!user.IsActive)
            {
                throw new AccessKeyException($"User id {userId} is not active");
            }

            try
            {
                var accessKey = new AccessKey(Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture))
                {
                    OwnerId = userId
                };
                user.AccessKeys.Add(accessKey);
                await _dbContext.SaveChangesAsync().ConfigureAwait(false);

                return(accessKey);
            }
            catch (Exception e)
            {
                _logger.LogError($"Exception occured while adding new access key for user {userId}", e);
                throw;
            }
        }