public async Task <IActionResult> Register(RegisterModel model)
        {
            var existing = await _context.Users
                           .FirstOrDefaultAsync(u => u.EmailAddress == model.EmailAddress);

            if (existing != null)
            {
                return(Generate(HttpStatusCode.BadRequest, $"User name \"{model.EmailAddress}\" is already taken."));
            }

            var user = new User
            {
                EmailAddress = model.EmailAddress,
                Password     = _hashService.GenerateHash(model.Password),
                FirstName    = model.FirstName,
                LastName     = model.LastName,
                DateOfBirth  = model.DateOfBirth.Value.ToUniversalTime()
            };

            _context.Users.Add(user);

            await _context.SaveChangesAsync();

            var result = new UserCreatedResponse
            {
                UserId = user.Id
            };

            return(Generate(HttpStatusCode.OK, result, "User successfully registered."));
        }
示例#2
0
        public async Task <IActionResult> CreateUser(CreateUserModel model)
        {
            var existing = await _context.Users
                           .FirstOrDefaultAsync(u => u.EmailAddress == model.EmailAddress);

            if (existing != null)
            {
                return(Generate(HttpStatusCode.BadRequest, $"User name \"{model.EmailAddress}\" is already taken."));
            }

            var user = new User
            {
                EmailAddress = model.EmailAddress,
                Password     = _hashService.GenerateHash(model.Password),
                FirstName    = model.FirstName,
                LastName     = model.LastName,
                DateOfBirth  = model.DateOfBirth.Value.ToUniversalTime()
            };

            user.UserRoles.Clear();

            var roles = await _context.Roles
                        .Where(r => model.Roles.Contains(r.Name))
                        .ToListAsync();

            foreach (var role in roles)
            {
                user.UserRoles.Add(new UserRole {
                    RoleId = role.Id
                });
            }

            _context.Users.Add(user);

            await _context.SaveChangesAsync();

            var result = new UserCreatedResponse
            {
                UserId = user.Id
            };

            return(Generate(HttpStatusCode.OK, result, "User successfully created."));
        }
示例#3
0
        public async Task <IActionResult> SeedData()
        {
            await _context.Database.MigrateAsync();

            var roleIds = new List <int>();

            foreach (Roles role in Enum.GetValues(typeof(Roles)))
            {
                var name   = role.GetAttributeOfType <DisplayAttribute>().Name;
                var roleId = await AddRoleAsync(name);

                roleIds.Add(roleId);
            }

            var userId = await AddSystemUserAsync(roleIds);

            var result = new UserCreatedResponse
            {
                UserId = userId
            };

            return(Generate(HttpStatusCode.OK, result, "User successfully created."));
        }