Beispiel #1
0
        private void SendActivationEmail(UserDto user, ActivationDto activation)
        {
            var email = new EmailRabbitMq
            {
                EmailAddress  = user.Email,
                TemplateName  = "ActivateAccount",
                Subject       = "Activatie Eindhovense vriendjes",
                KeyWordValues = new List <EmailKeyWordValue>
                {
                    new EmailKeyWordValue
                    {
                        Key   = "Username",
                        Value = user.Username
                    },
                    new EmailKeyWordValue
                    {
                        Key   = "ActivationCode",
                        Value = activation.Code
                    }
                }
            };

            _publisher.Publish(new List <EmailRabbitMq> {
                email
            }, RabbitMqRouting.SendMail, RabbitMqExchange.MailExchange);
        }
        public async Task <IHttpActionResult> Activation(ActivationDto activationData)
        {
            var operationResult = await devicesControllerHelper.ActivateDevice(activationData);

            if (operationResult.Status.HasFlag(ActivateDeviceStatus.DeviceNotFound))
            {
                return(Content(
                           HttpStatusCode.NotFound,
                           new ErrorResponseDto()
                {
                    Error = ErrorCode.InvalidRequest,
                    Message = ErrorCode.InvalidRequest.Description(),
                    Details = operationResult.Status.Description()
                }
                           ));
            }

            if (!operationResult.Status.HasFlag(ActivateDeviceStatus.Success))
            {
                return(Content(
                           HttpStatusCode.BadRequest,
                           new ErrorResponseDto()
                {
                    Error = ErrorCode.InvalidRequest,
                    Message = ErrorCode.InvalidRequest.Description(),
                    Details = operationResult.Status.Description()
                }
                           ));
            }

            return(Ok(operationResult.Content));
        }
Beispiel #3
0
        public async Task Delete(Guid uuid)
        {
            ActivationDto activation = await _context.Activation
                                       .FindAsync(uuid);

            _context.Activation.Remove(activation);
            await _context.SaveChangesAsync();
        }
        public async Task ActivateUser(string code)
        {
            ActivationDto activationDto = await _activationDal.Find(code);

            if (activationDto == null)
            {
                throw new KeyNotFoundException();
            }

            await _disabledUserDal.Delete(activationDto.UserUuid);

            await _activationDal.Delete(activationDto.Uuid);
        }
Beispiel #5
0
        /// <summary>
        /// Saves the user in the database
        /// </summary>
        /// <param name="user">The form data the user send</param>
        public async Task Register(User user)
        {
            if (!await UserModelValid(user) || user.Password.Length < 8)
            {
                throw new UnprocessableException();
            }

            bool usernameOrEmailInUse = await _userDal.Exists(user.Username, user.Email);

            if (usernameOrEmailInUse)
            {
                throw new DuplicateNameException();
            }

            bool databaseContainsUsers = await _userDal.Any();

            var userDto = _mapper.Map <UserDto>(user);

            userDto.AccountRole = databaseContainsUsers ? AccountRole.User : AccountRole.SiteAdmin;
            userDto.Uuid        = Guid.NewGuid();

            var disabledUserDto = new DisabledUserDto
            {
                Reason   = DisableReason.EmailVerificationRequired,
                UserUuid = userDto.Uuid,
                Uuid     = Guid.NewGuid()
            };

            var activationDto = new ActivationDto
            {
                Code     = Guid.NewGuid().ToString(),
                UserUuid = userDto.Uuid,
                Uuid     = Guid.NewGuid()
            };

            await _disabledUserDal.Add(disabledUserDto);

            await _activationDal.Add(activationDto);

            var userRabbitMq = _mapper.Map <UserRabbitMqSensitiveInformation>(user);

            userRabbitMq.Uuid        = userDto.Uuid;
            userRabbitMq.AccountRole = databaseContainsUsers ? AccountRole.User : AccountRole.SiteAdmin;

            _publisher.Publish(userRabbitMq, RabbitMqRouting.AddUser, RabbitMqExchange.AuthenticationExchange);

            await _userDal.Add(userDto);

            SendActivationEmail(userDto, activationDto);
        }
Beispiel #6
0
        /// <summary>
        /// Activates the device.
        /// </summary>
        /// <param name="activationData">The activation data.</param>
        /// <returns></returns>
        public async Task <OperationResultDto <ActivationResponseDto, ActivateDeviceStatus> > ActivateDevice(ActivationDto activationData)
        {
            Device device = await deviceService.GetDevice(activationData.ActivationCode, DateTime.Parse(activationData.BirthDate));

            if (device == null)
            {
                return(new OperationResultDto <ActivationResponseDto, ActivateDeviceStatus>()
                {
                    Status = ActivateDeviceStatus.DeviceNotFound
                });
            }

            X509Certificate2 certificate = GenerateClientCertificate(activationData.Certificate, device.Id);

            if (certificate == null)
            {
                return(new OperationResultDto <ActivationResponseDto, ActivateDeviceStatus>()
                {
                    Status = ActivateDeviceStatus.CertificateSigningRequestInvalid
                });
            }

            var activation = Mapper.Map <Activation>(activationData);

            activation.Certificate = Convert.ToBase64String(certificate.RawData);
            activation.Thumbprint  = certificate.Thumbprint;

            var activationResult = await deviceService.ActivateDevice(activation);

            if (activationResult.Status != ActivateDeviceStatus.Success)
            {
                return(new OperationResultDto <ActivationResponseDto, ActivateDeviceStatus>()
                {
                    Status = activationResult.Status
                });
            }

            var activationResponseDto = Mapper.Map <ActivationResponseDto>(activationResult.Content);

            activationResponseDto.Certificate = Convert.ToBase64String(certificate.GetRawCertData());

            return(new OperationResultDto <ActivationResponseDto, ActivateDeviceStatus>()
            {
                Status = ActivateDeviceStatus.Success,
                Content = activationResponseDto
            });
        }
Beispiel #7
0
        public async Task Add(ActivationDto activation)
        {
            await _context.Activation.AddAsync(activation);

            await _context.SaveChangesAsync();
        }
 private static bool ActivationModelValid(ActivationDto activation)
 {
     return(!string.IsNullOrEmpty(activation.Code) &&
            activation.UserUuid != Guid.Empty &&
            activation.Uuid != Guid.Empty);
 }