public async void AddFcmToken(int userId, string fcmToken, int os) { await using var context = _contextFactory.CreateContext(); if (string.IsNullOrEmpty(fcmToken)) { return; } var userToFcmToken = await context.UserToFcmTokens.FindAsync(userId, fcmToken); if (userToFcmToken == null) { var user = context.Users.AsNoTracking().First(x => x.Id == userId); var newUserToFcmToken = new UserToFcmToken { FcmToken = fcmToken, IsInApp = true, LastSignIn = user.CreatedDate + TimeSpan.FromMinutes(AuthOptions.LifeTimeMinutes) > DateTime.UtcNow ? user.CreatedDate : DateTime.UtcNow, LastVisit = DateTime.UtcNow, UserId = userId }; await context.UserToFcmTokens.AddAsync(newUserToFcmToken); } else { userToFcmToken.LastVisit = DateTime.UtcNow; } await context.SaveChangesAsync(); }
public async Task <UserAuthentication> CreateUserAuthenticationAsync(UserAuthentication userAuthentication, string fcmToken, int os) { if (userAuthentication == null) { throw new ArgumentNullException(nameof(userAuthentication)); } using (var context = _contextFactory.CreateContext()) { var userAuth = await context.UserAuthentications.AddAsync(userAuthentication); if (!string.IsNullOrEmpty(fcmToken)) { var userToFcmToken = new UserToFcmToken { UserId = userAuthentication.UserId, FcmToken = fcmToken, LastSignIn = DateTime.UtcNow, LastVisit = DateTime.UtcNow, IsInApp = true, Os = os }; await context.UserToFcmTokens.AddAsync(userToFcmToken); } await context.SaveChangesAsync(); return(userAuth.Entity); } }
public async Task <TokenResponse> ClassicLogin(UserCredential userCredential) { if (userCredential == null) { throw new ArgumentNullException(nameof(userCredential)); } if (!IsValidPassword(userCredential.UserPassword)) { throw new ValidationException(_stringLocalizer["PasswordIsNotValid"]); } if (!IsValidUserName(userCredential.Login)) { throw new ValidationException(_stringLocalizer["LoginIsNotValid"]); } var user = await _userService.GetUserByLoginAsync(userCredential.Login); if (user == null) { throw new ValidationException(_stringLocalizer["PasswordOrLoginIsWrong"]); } var hashedPassword = _passwordEncryptor.Encrypt(userCredential.UserPassword); var isValidPassword = await _authService.IsValidPasswordAsync(user.Id, hashedPassword); if (!isValidPassword) { throw new ValidationException(_stringLocalizer["PasswordOrLoginIsWrong"]); } var claimIdentity = _authService.GetIdentity(user); var jwtToken = _authService.GetJwtToken(claimIdentity); var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwtToken); if (string.IsNullOrEmpty(userCredential.FcmToken)) { return new TokenResponse { Token = encodedJwt, Login = user.Login } } ; var userToFcmToken = new UserToFcmToken { UserId = user.Id, FcmToken = userCredential.FcmToken, LastSignIn = DateTime.UtcNow, LastVisit = DateTime.UtcNow, IsInApp = true, Os = userCredential.Os }; using (var context = _contextFactory.CreateContext()) { var userToFcmTokenExist = await context.UserToFcmTokens.FindAsync(userToFcmToken.UserId, userToFcmToken.FcmToken); if (userToFcmTokenExist == null) { await context.UserToFcmTokens.AddAsync(userToFcmToken); } else { userToFcmTokenExist.IsInApp = true; userToFcmTokenExist.LastSignIn = DateTime.UtcNow; userToFcmTokenExist.LastVisit = DateTime.UtcNow; } await context.SaveChangesAsync(); } return(new TokenResponse { Token = encodedJwt, Login = user.Login }); }