public async Task <LoginResults> GoogleLogin(GoogleRegisterViewModel input) { var result = new Status(); var returnResults = new LoginResults { status = new Status(), userDetail = new UserViewModel() }; try { var user = new User { FirstName = input.givenName, LastName = input.familyName, Email = input.email, RoleID = 2, Source = Helpers.Constants.SOURCE_GOOGLE, UserName = input.email }; var existUsers = await _context.Users.Where(x => x.Email == input.email).ToListAsync(); if (existUsers.Count > 0) { var valid = existUsers.Where(x => x.Deleted == false).FirstOrDefault(); if (valid != null) { user = valid; } else { throw new Exception("Given email is restricted, please use another email"); } } var password = Helpers.StringCipher.Encrypt("Password*123"); //ENCRYPTS PASSWORD if (user.ID == 0) { user.Password = password; user.IsFirstTimeLogin = true; _context.Users.Add(user); await _context.SaveChangesAsync(); } if (user != null) { var googleRegister = input.Adapt <GoogleRegister>(); googleRegister.googleid = input.id; googleRegister.accessToken = input.authentication.accessToken; googleRegister.idToken = input.authentication.idToken; googleRegister.User = user; googleRegister.UserId = user.ID; _context.GoogleRegisters.Add(googleRegister); await _context.SaveChangesAsync(); returnResults.userDetail = user.Adapt <UserViewModel>(); result = new Status { StatusCode = 200, StatusDisplay = "Logged in Successfully", StatusValue = true }; } else { result = new Status { StatusCode = 198, StatusDisplay = "UserName and Password does not match", StatusValue = false }; } } catch (Exception ex) { result = new Status { StatusCode = 500, StatusDisplay = ex.Message, StatusValue = false }; } returnResults.status = result; return(returnResults); }
public async Task <IActionResult> GoogleLogin(GoogleRegisterViewModel input) { var returnResut = await accountsServices.GoogleLogin(input); return(new JsonResult(returnResut)); }