public async Task <long> Register(RegisterRequest request) { // checking if username already exists before anything. var usernameCount = await _context.Specialists .Where(s => s.Username == request.Username) .CountAsync(); if (usernameCount > 0) { return(-1); } // this will be put to the db var saltAndHash = EncryptionHelpter.Encrypt(request.Password); var insertedPassword = new SpecialistPassword(saltAndHash.Salt, saltAndHash.Hash); _context.Passwords.Add(insertedPassword); await _context.SaveChangesAsync(); var user = new Specialist( request.Username, request.Name, request.Surname, insertedPassword.Id); _context.Specialists.Add(user); await _context.SaveChangesAsync(); return(user.Id); }
public async Task <AuthResponse> Authenticate(AuthRequest request) { if (request == null) { return(null); } var user = await GetByUsername(request.Username); if (user == null) { return(null); } // checking if the password is correct by hashing it and comparing to hashed pass from db var hashed = EncryptionHelpter.Encrypt(request.Password, user.Password.Salt); if (hashed != user.Password.Hash) { return(null); } else { var token = GenerateJwtToken(user); return(new AuthResponse(user, token)); } }