public async Task <ActionResult <UserKundenDto> > Register2Async([FromBody] UserKundenDto userKunde) { try { await _authService.CreateUserKunde(userKunde, _context); return(Ok(userKunde)); } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError, new { Message = e.Message, Details = e.InnerException?.Message })); } }
/// <summary> /// Meldet den User an der Adresse (baseUrl)/user/register2 an und setzt den Token als /// Default Request Header für zukünftige Anfragen. /// </summary> /// <param name="user">Benutzer, der registriert werden soll.</param> /// <returns>Userobjekt mit Token wenn erfolgreich, null bei ungültigen Daten.</returns> public async Task <bool> TryRegisterAsync(UserKundenDto user) { try { await SendAsync <UserDto>(HttpMethod.Post, "user/register2", user); return(true); } catch (ServiceException e) when(e.HttpStatusCode == (int)HttpStatusCode.Unauthorized) { return(false); } }
/// <summary> /// Erstellt einen neuen Benutzer in der Datenbank. Dafür wird ein Salt generiert und der /// Hash des Passwortes berechnet. /// </summary> /// <param name="credentials"></param> /// <returns></returns> public async Task <User> CreateUserKunde(UserKundenDto credentials, PureFitDbContext con) { string salt = GenerateRandom(); // Den neuen Userdatensatz erstellen Kunde newKunde = new Kunde { K_Vorname = credentials.Vorname, K_Zuname = credentials.Zuname, K_Geschlecht = credentials.Geschlecht, K_GebDatum = Encoding.ASCII.GetBytes(credentials.GebDatum), K_Gewicht = Encoding.ASCII.GetBytes(credentials.Gewicht), K_Groesse = Encoding.ASCII.GetBytes(credentials.Groesse), K_TelefonNr = credentials.TelefonNr, K_Email = credentials.Email, K_Trainingslevel = con.Trainingslevel.Where(w => w.tr_levelname == credentials.Trainingslevel).Select(s => s.tr_levelNr).FirstOrDefault(), K_Nr = null }; con.Entry(newKunde).State = Microsoft.EntityFrameworkCore.EntityState.Added; await con.SaveChangesAsync(); User newUser = new User { U_Name = credentials.Username, U_Salt = salt, U_Hash = CalculateHash(credentials.Password, salt), U_Kunde_Nr = newKunde.K_Nr, U_Role = "Kunde", //Alle die sich registrieren sind Kunden und keine Admins zum bearbeiten U_ID = null //ID muss zuerst auf null gesetzt werden, weil db sonst nicht erkennt, dass AutoIncrement gesetzt werden soll! }; con.Entry(newUser).State = Microsoft.EntityFrameworkCore.EntityState.Added; await con.SaveChangesAsync(); return(newUser); }
public async Task <ActionResult <User> > RegisterKundenUser(UserKundenDto userKunde) { await _authService.CreateUserKunde(userKunde, _context); return(Ok(userKunde)); }