public async Task <UserDto> ApiRegister([FromBody] UserDto userInfo) { // if no users, the first one made is always admin if (userService.Get().Count() == 0) { userInfo.Role = "Admin"; } else { userInfo.Role = "Normal"; } LoginDto smallerDto = new LoginDto() { UserName = userInfo.Name, Password = userInfo.PasswordOrHash }; CreatedLoginDto preregisterInfo = loginService.RegisterOrUpdate(smallerDto); // this is just hashing the password and should always succeed var result = userService.Create(userInfo.CloneWithNewInfo(preregisterInfo)); // register implies Login(user) if no one is currently logged in if (ApiGetCurrentUser() == null) { await ApiLogin(smallerDto); } return(result); }
public override UserDto ApiCreate([FromBody] UserDto dto) { CreatedLoginDto hashedPwdInfo = loginService.RegisterOrUpdate(new LoginDto() { UserName = dto.Name, Password = dto.PasswordOrHash }); return(base.ApiCreate(dto.CloneWithNewInfo(hashedPwdInfo))); }
public UserDto CloneWithNewInfo(CreatedLoginDto loginInfo) { return(new UserDto() { Id = this.Id, Role = this.Role, Name = loginInfo.UserName, FriendlyName = this.FriendlyName, CalendarVisibleToOthers = this.CalendarVisibleToOthers, Happenings = this.Happenings, PasswordOrHash = loginInfo.Hash }); }
// special override for ApiUpdate to bake in the password changing parts public override UserDto ApiUpdate([FromBody] UserDto dto) { if (String.IsNullOrEmpty(dto.PasswordOrHash)) { return(base.ApiUpdate(dto)); // if no password is being changed we don't have to go through the extra stuff below } CreatedLoginDto hashedPwdInfo = loginService.RegisterOrUpdate(new LoginDto() { UserName = dto.Name, Password = dto.PasswordOrHash }); return(base.ApiUpdate(dto.CloneWithNewInfo(hashedPwdInfo))); }
public override UserDto ApiUpdate([FromBody] UserDto dto) { if (dto.PasswordOrHash == null || dto.PasswordOrHash.Trim().Length == 0) { return(base.ApiUpdate(dto)); // we can't do this as easily for mass, but we can shortcut here to avoid hashing non-password relevant updates } CreatedLoginDto hashedPwdInfo = loginService.RegisterOrUpdate(new LoginDto() { UserName = dto.Name, Password = dto.PasswordOrHash }); return(base.ApiUpdate(dto.CloneWithNewInfo(hashedPwdInfo))); }