Beispiel #1
0
        public async Task <IActionResult> FacebookLogin([FromBody] FacebookUserData userData)
        {
            var key = Extensions.KeyJwt(_configuration);

            var appUser = new ApplicationUser()
            {
                FullName = userData.Name,
                Email    = userData.Email,
                UserName = userData.Email,
                Gender   = userData.Gender.ToLower() == "male",
                Picture  = userData.Picture.Data.Url
            };

            var result = await _repository.CreateUser(appUser, userData.Password);

            if (!result.Succeeded)
            {
                return(new BadRequestObjectResult(Errors.AddErrorsToModelState(result, ModelState)));
            }

            await _repository.AddCustomer(new Customer
            {
                CustomerId = appUser.Id,
                JoinDate   = DateTime.Now,
                FacebookId = userData.Id
            });

//            var anonymousId = Request.Cookies["AnonymousId"];

            await _repository.MoveCart(userData.AnonymousId, userData.Email);

            var localUser = await _repository.FindUserByUserName(userData.Email);

            return(Ok(await _repository.GenerateJwtToken(localUser, key)));
        }
Beispiel #2
0
        public async Task <IActionResult> LoginFacebookCallback(FacebookUserData model, String returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;

            if (ModelState.IsValid)
            {
                model.AnonymousId = Request.Cookies["AnonymousId"];

                StringContent userFb = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8,
                                                         "application/json");

                dynamic result = await Extensions.JsonDataFromApi($"api/auth/FacebookLogin", "post", userFb);

                var token = result.access_token.ToString();
                if (await _claimPrincipalManager.LoginFbAsync(token))
                {
                    Response.Cookies.Append("jwt", token, new CookieOptions {
                        Expires = DateTime.Now.AddDays(30)
                    });
                    return(RedirectToLocal(returnUrl));
                }

                return(View("LoginViaFacebook", "Login failed!"));
            }

            return(View(model));
        }
Beispiel #3
0
        public async Task <IActionResult> CheckUserExistedForFbLogin([FromBody] FacebookUserData model)
        {
            var user = await _repository.FindUserByUserName(model.Email);

            bool userExisted = user != null;

            if (userExisted)
            {
                var customer = await _repository.CurrentCustomer(user.Id);

                if (customer.FacebookId == model.Id)
                {
                    await _repository.MoveCart(model.AnonymousId, model.Email);

                    return
                        (Json(
                             new
                    {
                        isExisted = userExisted,
                        data = await _repository.GenerateJwtToken(user, Extensions.KeyJwt(_configuration))
                    }));
                }
            }

            return(Json(new { isExisted = userExisted }));
        }
        public async Task <ActionResult <string> > Login([FromQuery] string code)
        {
            if (code == null)
            {
                return(BadRequest());
            }

            FacebookAccessToken accessToken = await this._facebookAuthService.GetAccessToken(code);

            if (accessToken == null)
            {
                return(BadRequest());
            }

            FacebookUserData data = await _facebookAuthService.GetFacebookUserData(accessToken);

            if (data == null)
            {
                return(BadRequest());
            }

            var user = await _userService.GetUserByEmail(data.Email);

            if (user == null)
            {
                user = new User
                {
                    Email = data.Email
                };

                user = await this._userService.Insert(user);
            }

            return(TokenUtil.GenerateToken(user, _jwtSettings));
        }
Beispiel #5
0
        public async Task <FacebookUserData> UserInfo(string token)
        {
            FacebookUserData facebookUserData1 = await _webApiHelper.GetAsync <FacebookUserData>(GraphUrl, "me", this.DefaultParamater(HttpMethod.Get, token), "");

            FacebookUserData user             = facebookUserData1;
            FacebookUserData facebookUserData = user;

            if (!string.IsNullOrEmpty(facebookUserData?.Id))
            {
                FacebookUserData       facebookUserData2      = user;
                FacebookUserAvatarData facebookUserAvatarData = await GetUserAvatar(user.Id, token);

                FacebookUserAvatarData facebookUserAvatarData1 = facebookUserAvatarData;
                string str1;
                if (facebookUserAvatarData1 == null)
                {
                    str1 = null;
                }
                else
                {
                    FacebookUserAvatarDataData datta = facebookUserAvatarData1.Datta;
                    str1 = datta?.Url;
                }
                string str = str1;
                facebookUserData2.Avatar = str;
            }
            return(user);
        }
Beispiel #6
0
    public void AddFacebookFriend(string id, string username)
    {
        FacebookUserData data = new FacebookUserData();

        data.facebookID = id;
        data.username   = Data.Instance.gameSettings.GetUsername(username);
        FacebookFriends.Add(data);
    }
Beispiel #7
0
    void Awake()
    {
        if (!FB.IsInitialized)
        {
            FB.Init(InitCallback);
        }

        facebookUserData = FindObjectOfType <FacebookUserData>();

        ShowUI();
    }
 private static void KisiyeFacebookFotografiEkle(FacebookUserData facebookUserInfo, Kullanici user)
 {
     user.Kisi.Fotograflari.Add(new KisiFoto
     {
         Aciklama        = "Facobook profil fotoğrafı",
         DisKaynakId     = "facebook",
         EklenmeTarihi   = DateTime.UtcNow,
         ProfilFotografi = true,
         Url             = facebookUserInfo.Picture.Data.Url
     });
 }
Beispiel #9
0
 private int ComparerData(FacebookUserData a, FacebookUserData b)
 {
     if (a.m_Installed && !b.m_Installed)
     {
         return(-1);
     }
     if (!a.m_Installed && b.m_Installed)
     {
         return(1);
     }
     return(1);
 }
Beispiel #10
0
    public void SetUserData(FACEBOOK_FRIEND_GAMEINFO Data)
    {
        FacebookUserData facebookUserData = this.FindFriendData(TKString.NEWString(Data.szFaceBookID));

        if (facebookUserData != null)
        {
            facebookUserData.m_GameName    = TKString.NEWString(Data.szCharName);
            facebookUserData.nFaceCharKind = Data.nFaceCharKind;
            facebookUserData.Level         = Data.nCharLevel;
            NmFacebookManager.instance.FriendsData[facebookUserData.m_ID] = facebookUserData;
        }
    }
Beispiel #11
0
    public void OnClickInvateGame(IUIObject obj)
    {
        FacebookUserData facebookUserData = (FacebookUserData)obj.Data;

        if (facebookUserData == null)
        {
            return;
        }
        NmFacebookManager.instance.FriendRequestMessage(NrTSingleton <NrTextMgr> .Instance.GetTextFromFacebook("15"), facebookUserData.m_ID);
        GS_CHAR_CHALLENGE_INVITESNG_REQ gS_CHAR_CHALLENGE_INVITESNG_REQ = new GS_CHAR_CHALLENGE_INVITESNG_REQ();

        gS_CHAR_CHALLENGE_INVITESNG_REQ.invite_sngtype = 1;
        SendPacket.GetInstance().SendObject(eGAME_PACKET_ID.GS_CHAR_CHALLENGE_INVITESNG_REQ, gS_CHAR_CHALLENGE_INVITESNG_REQ);
    }
Beispiel #12
0
    private void AddListItem(FacebookUserData _ItemData)
    {
        TsLog.LogWarning("AddListItem _ItemData = {0} , GameName = {1}", new object[]
        {
            _ItemData.m_ID,
            _ItemData.m_GameName
        });
        NewListItem    newListItem  = new NewListItem(this.m_ListBox.ColumnNum, true, string.Empty);
        NrCharKindInfo charKindInfo = NrTSingleton <NrCharKindInfoManager> .Instance.GetCharKindInfo(_ItemData.nFaceCharKind);

        if (charKindInfo != null)
        {
            newListItem.SetListItemData(3, charKindInfo.GetCharKind(), null, null, null);
            newListItem.SetListItemData(9, false);
        }
        else
        {
            newListItem.SetListItemData(3, false);
            newListItem.SetListItemData(9, true);
        }
        if (string.IsNullOrEmpty(_ItemData.m_GameName))
        {
            newListItem.SetListItemData(4, false);
            newListItem.SetListItemData(5, false);
            newListItem.SetListItemData(7, _ItemData.m_Name, null, null, null);
        }
        else
        {
            newListItem.SetListItemData(4, _ItemData.m_GameName, null, null, null);
            newListItem.SetListItemData(5, _ItemData.m_Name, null, null, null);
            newListItem.SetListItemData(7, false);
        }
        if (_ItemData.Level != 0)
        {
            newListItem.SetListItemData(6, NrTSingleton <NrTextMgr> .Instance.GetTextFromInterface("178"), _ItemData, new EZValueChangedDelegate(this.OnClickInvateFriend), null);
            newListItem.SetListItemData(8, false);
        }
        else
        {
            newListItem.SetListItemData(6, false);
            newListItem.SetListItemData(8, NrTSingleton <NrTextMgr> .Instance.GetTextFromInterface("179"), _ItemData, new EZValueChangedDelegate(this.OnClickInvateGame), null);
        }
        newListItem.Data = _ItemData.m_ID;
        this.m_ListBox.Add(newListItem);
    }
        public async Task <string> ExternalLoginOrRegister(string accessToken)
        {
            FacebookUserData userInfo = await this.GetFacebookUserData(accessToken);

            if (userInfo == null)
            {
                return(null);
            }

            UserEntity user = await this.userManager.FindByEmailAsync(userInfo.Email);

            if (user == null)
            {
                var appUser = new UserEntity
                {
                    FirstName  = userInfo.FirstName,
                    LastName   = userInfo.LastName,
                    FacebookId = userInfo.Id,
                    Email      = userInfo.Email,
                    UserName   = userInfo.Email,
                    PictureUrl = userInfo.Picture.Data.Url
                };

                var result = await this.userManager.CreateAsync(appUser, Convert.ToBase64String(Guid.NewGuid().ToByteArray()).Substring(0, 8));

                if (result.Succeeded)
                {
                    await this.appDbContext.SaveChangesAsync();
                }
            }

            UserEntity localUser = await this.userManager.FindByNameAsync(userInfo.Email);

            if (localUser == null)
            {
                return(null);
            }

            return(await TokenGenerator.GenerateTokenAsync(
                       this.jwtFactory.GenerateClaimsIdentity(localUser.UserName, localUser.Id),
                       this.jwtFactory, localUser.UserName, this.jwtOptions, new JsonSerializerSettings { Formatting = Formatting.Indented }));
        }
Beispiel #14
0
        private async Task <AuthenticateResponse> CheckFacebookUserIdDB(FacebookUserData facebook)
        {
            var user = await this._context.Users.SingleOrDefaultAsync(x => x.Email == facebook.Email);

            if (user == null)
            {
                user = new EntityUser()
                {
                    FacebookId       = facebook.Id.ToString(),
                    Username         = $"{facebook.FirstName} {facebook.LastName}",
                    Email            = facebook.Email,
                    Activated        = true,
                    RegistrationDate = DateTime.Now
                };
                await this._context.Users.AddAsync(user);

                await this._context.SaveChangesAsync();
            }
            return(new AuthenticateResponse(user, this.generateJwtToken(user)));
        }
Beispiel #15
0
        public async Task <IActionResult> FacebookAuthentication([FromBody] FacebookAuthViewModel model)
        {
            FacebookUserData userInfo = await this.authService.GetFacebookUserInfoAsync(model.AccessToken);

            ApplicationUser user = await userManager.FindByNameAsync(userInfo.Email);

            if (user == null)
            {
                user = new ApplicationUser
                {
                    Name     = userInfo.FirstName,
                    Email    = userInfo.Email,
                    UserName = userInfo.Email,
                };

                var result = await userManager.CreateAsync(user, Convert.ToBase64String(Guid.NewGuid().ToByteArray()).Substring(0, 8));
            }

            return(Ok(this.authService.GenerateJwtToken(user)));
        }
        public async Task <IdentityResult> CreateUserAsync(AppUser user, FacebookUserData facebookUserData, string password)
        {
            var result = await this.userManager.CreateAsync(user, password).ConfigureAwait(false);

            if (!result.Succeeded)
            {
                return(null);
            }

            await this.identityDbContext.Customers
            .AddAsync(new Customer
            {
                IdentityId = user.Id, Location = new Domain.Model.ValueObjects.Location(),
                Locale     = facebookUserData.Locale,
                Gender     = facebookUserData.Gender
            });

            await this.identityDbContext.SaveChangesAsync();

            return(result);
        }
Beispiel #17
0
    public void OnClickInvateFriend(IUIObject obj)
    {
        FacebookUserData facebookUserData = (FacebookUserData)obj.Data;

        if (facebookUserData == null)
        {
            return;
        }
        GS_FRIEND_APPLY_REQ gS_FRIEND_APPLY_REQ = new GS_FRIEND_APPLY_REQ();

        gS_FRIEND_APPLY_REQ.i32WorldID = 0;
        TKString.StringChar(facebookUserData.m_GameName, ref gS_FRIEND_APPLY_REQ.name);
        SendPacket.GetInstance().SendObject(904, gS_FRIEND_APPLY_REQ);
        string empty = string.Empty;

        NrTSingleton <CTextParser> .Instance.ReplaceParam(ref empty, new object[]
        {
            NrTSingleton <NrTextMgr> .Instance.GetTextFromNotify("23"),
            "Charname",
            facebookUserData.m_Name
        });
    }
        private async Task <JwtRefreshTokenModel> _processUserDetails(FacebookUserData userInfo)
        {
            // 4. ready to create the local user account (if necessary) and jwt
            var user = await _userManager.FindByEmailAsync(userInfo.Email);

            if (user is null)
            {
                var appUser = new ApplicationUser {
                    FirstName  = userInfo.FirstName,
                    LastName   = userInfo.LastName,
                    FacebookId = userInfo.Id,
                    Email      = userInfo.Email,
                    UserName   = userInfo.Email,
                    PictureUrl = userInfo.Picture.Data.Url
                };
                var result = await _userManager.CreateAsync(appUser, Convert.ToBase64String(Guid.NewGuid().ToByteArray()).Substring(0, 8));

                if (!result.Succeeded)
                {
                    throw new InvalidOperationException(
                              ModelState.ToString()
                              );
                }
            }
            else
            {
                user.PictureUrl = userInfo.Picture.Data.Url;
                var result = await _userManager.UpdateAsync(user);

                if (!result.Succeeded)
                {
                    throw new InvalidOperationException(
                              ModelState.ToString()
                              );
                }
            }

            // generate the jwt for the local user...
            var localUser = await _userManager.FindByNameAsync(userInfo.Email);

            if (localUser is null)
            {
                throw new InvalidOperationException(
                          ModelState.ToString()
                          );
            }
            var roles = await _userManager.GetRolesAsync(localUser);

            var jwt = await TokenIssuer.GenerateJwt(
                _jwtFactory.GenerateClaimsIdentity(localUser.UserName, localUser.Id),
                _jwtFactory,
                localUser.UserName,
                roles.ToArray <string>(),
                _jwtOptions,
                new JsonSerializerSettings { Formatting = Formatting.Indented });

            var refresh = TokenIssuer.GenerateRefreshToken(128);

            user.AddRefreshToken(
                refresh,
                _contextAccessor.HttpContext.Connection.RemoteIpAddress.ToString());

            await _unitOfWork.CompleteAsync();

            return(new JwtRefreshTokenModel(refresh, jwt));
        }
Beispiel #19
0
        public async Task <IActionResult> Facebook([FromBody] FacebookModel model)
        {
            var userInfo = new FacebookUserData();

            try
            {
                var userInfoResponse = await Client.GetStringAsync($"https://graph.facebook.com/v3.0/me?fields=id,email,first_name,last_name,gender,locale,birthday,picture&access_token={model.AccessToken}");

                userInfo = JsonConvert.DeserializeObject <FacebookUserData>(userInfoResponse);
            }
            catch (Exception ex)
            {
                return(new BadRequestObjectResult(new List <ErrorViewModel>()
                {
                    new ErrorViewModel()
                    {
                        Code = "InvalidToken", Description = "Facebook token is not valid."
                    }
                }));
            }
            if (userInfo.Picture != null)
            {
                try
                {
                    var imageResponse = await Client.GetStringAsync($"https://graph.facebook.com/v3.0/{userInfo.Id}/picture?type=album&redirect=false");

                    var image = JsonConvert.DeserializeObject <FacebookPictureData>(imageResponse);
                    userInfo.Picture = image;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }
            }
            var existingUser = await _userManager.FindByEmailAsync(userInfo.Email);

            if (existingUser == null)
            {
                var user = new ApplicationUser
                {
                    FacebookId  = userInfo.Id,
                    Email       = userInfo.Email,
                    UserName    = userInfo.FirstName + userInfo.LastName,
                    PictureUrl  = userInfo.Picture?.Data?.Url,
                    Visibility  = true,
                    Nationality = "US"
                };

                if (userInfo.Gender != null)
                {
                    user.Gender = userInfo.Gender.Equals("male") ? Gender.Male : userInfo.Gender.Equals("female") ? Gender.Female : Gender.Other;
                }
                else
                {
                    user.Gender = Gender.None;
                }
                if (userInfo.Birthday != DateTime.MinValue)
                {
                    var dateOfBirth = new DateTime(day: userInfo.Birthday.Day, month: userInfo.Birthday.Month, year: DateTime.Now.Year);
                    if (DateTime.Now >= dateOfBirth)
                    {
                        user.Age = DateTime.Now.Year - userInfo.Birthday.Year;
                    }
                    else
                    {
                        user.Age = DateTime.Now.Year - userInfo.Birthday.Year - 1;
                    }
                }

                user.UserName = UserExtensions.RemoveDiacritics(user.UserName);
                var result = await _userManager.CreateAsync(user, Convert.ToBase64String(Guid.NewGuid().ToByteArray()).Substring(0, 8));

                if (!result.Succeeded)
                {
                    return(new BadRequestObjectResult(result.Errors));
                }
                else
                {
                    existingUser = await _userManager.FindByNameAsync(user.UserName);
                }
            }

            var jwt = await Tokens.GenerateJwt(_jwtFactory.GenerateClaimsIdentity(existingUser.UserName, existingUser.Id),
                                               _jwtFactory, existingUser.UserName, _jwtOptions, new JsonSerializerSettings { Formatting = Formatting.Indented }, existingUser.ProfileComplete);

            return(new OkObjectResult(jwt));
        }
Beispiel #20
0
 void Awake()
 {
     facebookUserData = FindObjectOfType <FacebookUserData>();
 }