Пример #1
0
        protected virtual IActionResult SocialLogin(SocialLoginRequest socialLoginRequest)
        {
            if (socialLoginRequest == null)
            {
                return(BadRequest());
            }

            var loginResponse = UserBusiness.SocialLogin(SocialNetworkType.Get(socialLoginRequest.SocialNetworkType), socialLoginRequest.Email, socialLoginRequest.Token, socialLoginRequest.RequestedToBeAdvisor);

            return(Ok(new { logged = !loginResponse.PendingConfirmation, jwt = GenerateToken(socialLoginRequest.Email.ToLower().Trim()), data = loginResponse }));
        }
Пример #2
0
        public async Task <ActionResult <TokenResponse> > Google([FromBody] SocialLoginRequest loginRequest)
        {
            try
            {
                var result = await new HttpClient().GetStringAsync($"https://www.googleapis.com/plus/v1/people/{loginRequest.SocialUserId}?access_token={loginRequest.AccessToken}");

                if (result == null)
                {
                    return(Unauthorized());
                }

                var jsonResult = JObject.Parse(result);
                var email      = ((JArray)jsonResult["emails"]).FirstOrDefault()["value"].ToString();;

                return(await _authService.GetTokenForSocial("google", email));
            }
            catch (Exception)
            {
                return(Unauthorized());
            }
        }
Пример #3
0
 public new IActionResult SocialLogin([FromBody] SocialLoginRequest socialLoginRequest)
 {
     return(base.SocialLogin(socialLoginRequest));
 }
Пример #4
0
        public IActionResult FacebookLogin([FromForm] SocialLoginRequest request)
        {
            var user = _context.Users.Where(x => x.Email == request.Email.Trim()).FirstOrDefault();

            //Email chưa được sử dụng trong hệ thống, đăng ký tài khoản mới
            if (user == null)
            {
                var newUser = new AppUser()
                {
                    NumberOfFiends = 0,
                    NumberOfImages = 0,
                    NumberOfLikes  = 0,
                    Email          = request.Email,
                    Role           = ERole.User,
                    FullName       = request.FullName,
                    UserName       = request.Email,
                    AvatarPath     = request.Avatar,
                    IsInfoUpdated  = false,
                    PassWord       = Guid.NewGuid().ToString()
                };

                switch (request.Provider.ToLower())
                {
                case "facebook":
                    newUser.TypeAccount = ETypeAccount.Facebook;
                    break;

                case "google":
                    newUser.TypeAccount = ETypeAccount.Google;
                    break;

                default:
                    return(BadRequest(new { Message = "Provider is not correct" }));
                }

                var mailchimp = new MailChimpModel()
                {
                    Email = request.Email,
                    Name  = request.FullName
                };

                _mailchimpService.Subscribe(mailchimp);

                try
                {
                    _context.Users.Add(newUser);
                    _context.SaveChanges();
                    var response = new UserResponse(newUser, _storageService);
                    response.Token = this.GenerateJSONWebToken(newUser);
                    return(Ok(response));
                }
                catch (Exception e)
                {
                    return(BadRequest(new
                    {
                        Message = e.Message
                    }));
                }
            }
            else // Email đã có trong hệ thống, tiến hành đăng nhập
            {
                if (user.Status == EUserStatus.Inactive)
                {
                    return(BadRequest(new
                    {
                        Message = "Tài khoản của bạn đã bị khóa bởi quản trị viên!"
                    }));
                }

                var userResponse = new UserResponse(user, _storageService);

                userResponse.Token = this.GenerateJSONWebToken(user);

                //_sessionService.SetSessionUser(user);

                return(Ok(userResponse));
            }
        }