public AppUser GetOAuthUser(OAuthUserLoginModel model) { var user = DbSet.Where(x => x.Provider == model.Provider && x.ProviderUserId == model.ProviderId).Include(x => x.Token).FirstOrDefault(); return(user); }
public IHttpActionResult ExternalLogin([FromBody] OAuthUserLoginModel userLoginModel) { Response.Message = Messages.SucessMessage; Response.StatusCode = HttpStatusCode.OK; Response.Response = UserService.OAuthLogin(userLoginModel); return(Ok(Response)); }
public AppUser OAuthLogin(OAuthUserLoginModel loginModel) { HashSet <string> providers = new HashSet <string>() { "google", "facebook", }; if (!providers.Contains(loginModel.Provider)) { throw new MovieUniverseException(ExceptionType.InvalidProvider); } var oAuthUser = Repository.GetOAuthUser(loginModel); if (oAuthUser != null) { if (oAuthUser.Token.ExpirationDate.CompareTo(DateTimeOffset.Now) > 0) { return(oAuthUser); } var token = GenerateToken(oAuthUser); token.UserId = oAuthUser.Id; oAuthUser.Token = InsertToken(token); return(oAuthUser); } var appUser = new AppUser() { Email = loginModel.Email, EmailComfirmed = true, Name = loginModel.Name, Provider = loginModel.Provider, ProviderUserId = loginModel.ProviderId, PhotoUrl = loginModel.ProviderProfilePhotoUrl, ProviderProfileUrl = loginModel.ProviderProfileUrl, IsPublicUser = true, }; appUser.Token = GenerateToken(appUser); var user = Repository.Insert(appUser); Repository.Save(); return(user); }