public async Task CompleteSetupAsync(Provider provider, Guid ownerUserId, string token, string key)
        {
            var owner = await _userService.GetUserByIdAsync(ownerUserId);

            if (owner == null)
            {
                throw new BadRequestException("Invalid owner.");
            }

            if (!CoreHelpers.TokenIsValid("ProviderSetupInvite", _dataProtector, token, owner.Email, provider.Id, _globalSettings))
            {
                throw new BadRequestException("Invalid token.");
            }

            await _providerRepository.UpsertAsync(provider);

            var providerUser = new ProviderUser
            {
                ProviderId = provider.Id,
                UserId     = owner.Id,
                Key        = key,
                Status     = ProviderUserStatusType.Confirmed,
                Type       = ProviderUserType.ProviderAdmin,
            };

            await _providerUserRepository.CreateAsync(providerUser);
        }
示例#2
0
        public async Task CreateAsync(string ownerEmail)
        {
            var owner = await _userRepository.GetByEmailAsync(ownerEmail);

            if (owner == null)
            {
                throw new BadRequestException("Invalid owner. Owner must be an existing Bitwarden user.");
            }

            var provider = new Provider
            {
                Status    = ProviderStatusType.Pending,
                Enabled   = true,
                UseEvents = true,
            };
            await _providerRepository.CreateAsync(provider);

            var providerUser = new ProviderUser
            {
                ProviderId = provider.Id,
                UserId     = owner.Id,
                Type       = ProviderUserType.ProviderAdmin,
                Status     = ProviderUserStatusType.Confirmed,
            };
            await _providerUserRepository.CreateAsync(providerUser);

            await SendProviderSetupInviteEmailAsync(provider, owner.Email);
        }
        public async Task CreateAsync(string ownerEmail)
        {
            var owner = await _userRepository.GetByEmailAsync(ownerEmail);

            if (owner == null)
            {
                throw new BadRequestException("Invalid owner.");
            }

            var provider = new Provider
            {
                Status  = ProviderStatusType.Pending,
                Enabled = true,
            };
            await _providerRepository.CreateAsync(provider);

            var providerUser = new ProviderUser
            {
                ProviderId = provider.Id,
                UserId     = owner.Id,
                Type       = ProviderUserType.ProviderAdmin,
                Status     = ProviderUserStatusType.Confirmed,
            };
            await _providerUserRepository.CreateAsync(providerUser);

            var token = _dataProtector.Protect($"ProviderSetupInvite {provider.Id} {owner.Email} {CoreHelpers.ToEpocMilliseconds(DateTime.UtcNow)}");
            await _mailService.SendProviderSetupInviteEmailAsync(provider, token, owner.Email);
        }