Exemplo n.º 1
0
        public async Task <IActionResult> CreateUser([FromBody] Common.DataSvc.Models.UserDo entity)
        {
            return(await this.ControllerResult(async (Web.Models.ResultData result) =>
            {
                Web.Models.User.ApplicationUser exist = await this._userManager.FindByNameAsync(entity.UserName);
                if (exist != null)
                {
                    result.AddError("CLE011");
                }
                else
                {
                    entity.CreateDate = Utils.IOUtil.GetCurrentDateTimeTH;
                    entity.CreateUser = this.User.Identity.Name;

                    Web.Models.User.ApplicationUser user = new Web.Models.User.ApplicationUser
                    {
                        UserName = entity.UserName,
                        GroupID = entity.GroupID,
                        FlagActive = true,
                        FlagSystemAdmin = entity.FlagSystemAdmin,
                        PasswordAge = entity.PasswordAge,
                        LastUpdatePasswordDate = entity.LastUpdatePasswordDate,
                        Remark = entity.Remark
                    };

                    var res = await this._userManager.CreateAsync(user, entity.Password);
                    if (res.Succeeded)
                    {
                        user = await this._userManager.FindByNameAsync(entity.UserName);

                        entity.UserID = user.Id;

                        Common.DataSvc.Models.UserCriteriaDo criteria = new DataSvc.Models.UserCriteriaDo();
                        criteria.UserName = entity.UserName;

                        result.Data = await Task.Run(() =>
                        {
                            this._commonSvcDbContext.CreateUserInfo(entity);

                            DataSvc.Models.UserDo nuser = this._commonSvcDbContext.GetUser(criteria);
                            nuser.Password = FAKE_PASSWORD;

                            return new
                            {
                                User = nuser,
                                Permissions = this._commonSvcDbContext.GetUserPermission(criteria)
                            };
                        });
                    }
                    else
                    {
                        foreach (var error in res.Errors)
                        {
                            result.AddError(error.Code, error.Description);
                        }
                    }
                }
            }));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> GetUser([FromBody] Common.DataSvc.Models.UserCriteriaDo criteria)
        {
            return(await this.ControllerResult(async (Web.Models.ResultData result) =>
            {
                result.Data = await Task.Run(() =>
                {
                    DataSvc.Models.UserDo user = this._commonSvcDbContext.GetUser(criteria);
                    if (user != null)
                    {
                        user.Password = FAKE_PASSWORD;
                    }

                    return new
                    {
                        User = user,
                        Permissions = this._commonSvcDbContext.GetUserPermission(criteria)
                    };
                });
            }));
        }
Exemplo n.º 3
0
        public async Task <IActionResult> UpdateUser([FromBody] Common.DataSvc.Models.UserDo entity)
        {
            return(await this.ControllerResult(async (Web.Models.ResultData result) =>
            {
                bool currentUser = this.User.Identity.Name == entity.UserName;
                bool changePassword = (entity.Password != FAKE_PASSWORD);

                entity.UpdateDate = Utils.IOUtil.GetCurrentDateTimeTH;
                entity.UpdateUser = this.User.Identity.Name;

                Web.Models.User.ApplicationUser user = await this._userManager.FindByNameAsync(entity.UserName);
                if (user != null)
                {
                    user.GroupID = entity.GroupID;
                    user.FlagActive = entity.FlagActive;
                    user.FlagSystemAdmin = entity.FlagSystemAdmin;
                    user.PasswordAge = entity.PasswordAge;
                    user.Remark = entity.Remark;

                    if (changePassword && entity.Password != null)
                    {
                        user.LastUpdatePasswordDate = entity.UpdateDate;

                        Web.Validator.UserPasswordValidator <Web.Models.User.ApplicationUser> validator
                            = new Web.Validator.UserPasswordValidator <Web.Models.User.ApplicationUser>();
                        Microsoft.AspNetCore.Identity.IdentityResult pres = await validator.ValidateAsync(_userManager, user, entity.Password);
                        if (!pres.Succeeded)
                        {
                            foreach (var error in pres.Errors)
                            {
                                result.AddError(error.Code, error.Description);
                            }
                        }
                        else
                        {
                            await this._userManager.RemovePasswordAsync(user);
                            pres = await this._userManager.AddPasswordAsync(user, entity.Password);
                            if (!pres.Succeeded)
                            {
                                foreach (var error in pres.Errors)
                                {
                                    result.AddError(error.Code, error.Description);
                                }
                            }
                        }
                    }
                    if (result.Errors.Count == 0)
                    {
                        var res = await this._userManager.UpdateAsync(user);
                        if (!res.Succeeded)
                        {
                            foreach (var error in res.Errors)
                            {
                                result.AddError(error.Code, error.Description);
                            }
                        }
                        else
                        {
                            entity.UserID = user.Id;

                            Common.DataSvc.Models.UserCriteriaDo criteria = new DataSvc.Models.UserCriteriaDo();
                            criteria.UserName = entity.UserName;

                            result.Data = await Task.Run(() =>
                            {
                                this._commonSvcDbContext.UpdateUserInfo(entity);

                                DataSvc.Models.UserDo nuser = this._commonSvcDbContext.GetUser(criteria);
                                nuser.Password = FAKE_PASSWORD;

                                return new
                                {
                                    IsCurrentUser = currentUser,
                                    User = nuser,
                                    Permissions = this._commonSvcDbContext.GetUserPermission(criteria)
                                };
                            });
                        }
                    }
                }
            }));
        }