コード例 #1
0
        public async Task <IActionResult> Register([FromBody] RegisterViewModel formData)
        {
            if (ModelState.IsValid)
            {
                var user = new UserExtended {
                    UserName       = formData.UserName,
                    Displayname    = formData.Displayname,
                    CustomerId     = formData.CustomerId,
                    Email          = formData.Email,
                    IsAdmin        = formData.IsAdmin,
                    IsActive       = formData.IsActive,
                    EmailConfirmed = true,
                    SecurityStamp  = Guid.NewGuid().ToString()
                };
                var result = await userManager.CreateAsync(user, formData.Password);

                if (result.Succeeded)
                {
                    await userManager.AddToRoleAsync(user, user.IsAdmin? "Admin" : "User");

                    return(StatusCode(200, new {
                        response = ApiMessages.RecordCreated()
                    }));
                }
                else
                {
                    return(StatusCode(492, new { response = result.Errors.Select(x => x.Description) }));
                }
            }
            return(StatusCode(400, new { response = ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage) }));
        }
コード例 #2
0
        public async Task <IActionResult> GetUser(string id)
        {
            UserExtended record = await userManager.Users
                                  .Include(x => x.Customer)
                                  .DefaultIfEmpty()
                                  .SingleOrDefaultAsync(x => x.Id == id);

            if (record == null)
            {
                return(StatusCode(404, new {
                    response = ApiMessages.RecordNotFound()
                }));
            }
            UserReadResource vm = new() {
                Id          = record.Id,
                UserName    = record.UserName,
                Displayname = record.Displayname,
                Customer    = new SimpleResource {
                    Id          = (record.Customer?.Id) ?? 0,
                    Description = (record.Customer?.Description) ?? "(EMPTY)"
                },
                Email    = record.Email,
                IsAdmin  = record.IsAdmin,
                IsActive = record.IsActive
            };

            return(StatusCode(200, vm));
        }
コード例 #3
0
        private async Task UpdateRole(UserExtended user)
        {
            var roles = await userManager.GetRolesAsync(user);

            await userManager.RemoveFromRolesAsync(user, roles);

            await userManager.AddToRoleAsync(user, user.IsAdmin? "admin" : "user");
        }
コード例 #4
0
 private async Task <IdentityResult> UpdateUser(UserExtended user, UserWriteResource record)
 {
     user.UserName    = record.UserName;
     user.Displayname = record.Displayname;
     user.CustomerId  = record.CustomerId == 0 ? null : record.CustomerId;
     user.Email       = record.Email;
     user.IsAdmin     = record.IsAdmin;
     user.IsActive    = record.IsActive;
     return(await userManager.UpdateAsync(user));
 }
コード例 #5
0
        public async Task <IActionResult> PutUser([FromRoute] string id, [FromBody] UserWriteResource record)
        {
            if (id == record.Id && ModelState.IsValid)
            {
                UserExtended user = await userManager.FindByIdAsync(id);

                if (record != null)
                {
                    await UpdateUser(user, record);
                    await UpdateRole(user);

                    return(StatusCode(200, new { response = ApiMessages.RecordUpdated() }));
                }
                return(StatusCode(404, new {
                    response = ApiMessages.RecordNotFound()
                }));
            }
            return(StatusCode(400, new {
                response = ApiMessages.InvalidModel()
            }));
        }