Example #1
0
        public async Task <IActionResult> Register([FromForm] RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                var validationResult = _service.ValidateRegister(User, model);
                if (!validationResult.Valid)
                {
                    return(BadRequest(validationResult.Result));
                }
                IdentityResult result;
                using (var trans = context.Database.BeginTransaction())
                {
                    var entity = _service.ConvertToUser(model);
                    result = await _service
                             .CreateUserWithRolesTransactionAsync(entity, model.password);

                    if (result.Succeeded)
                    {
                        trans.Commit();
                        _logger.CustomProperties(entity).Info("Register new user");
                        return(NoContent());
                    }
                }
                foreach (var err in result.Errors)
                {
                    ModelState.AddModelError(err.Code, err.Description);
                }
            }
            var builder = ResultHelper.MakeInvalidAccountRegistrationResults(ModelState);

            return(BadRequest(builder.Results));
        }
        public async Task <IActionResult> Create(CreateDeviceModel model)
        {
            if (ModelState.IsValid)
            {
                var validCode        = _service.GetActivationCode(model.username);
                var validationResult = _service.ValidateCreateDevice(User, model, validCode);
                if (!validationResult.Valid)
                {
                    return(BadRequest(validationResult.Result));
                }
                //create user account
                var account = _service.MakeDeviceAccount(model);
                using (var trans = context.Database.BeginTransaction())
                {
                    var result = await _identityService.CreateUserWithRolesTransactionAsync(account, model.password,
                                                                                            new List <string>() { Data.RoleName.Device });

                    if (result.Succeeded)
                    {
                        //create device
                        var entity = _service.CreateDevice(model, account.Id);
                        context.SaveChanges();
                        trans.Commit();
                        return(Created($"/{ApiEndpoint.DEVICE_API}?id={entity.Id}",
                                       new AppResultBuilder().Success(entity.Id)));
                    }
                    foreach (var err in result.Errors)
                    {
                        ModelState.AddModelError(err.Code, err.Description);
                    }
                }
            }
            var builder = ResultHelper.MakeInvalidAccountRegistrationResults(ModelState);

            return(BadRequest(builder.Results));
        }