public async Task <IActionResult> Login(LinkedinUserAuthCodeDto linkedinUserAuthCodeDto)
        {
            string linkedinAuthToken = await ExchangeLinkedinCodeToUserToken(linkedinUserAuthCodeDto.LinkedinAuthCode);

            LinkedinUser linkedinUser = await GetLinkedinUser(linkedinAuthToken);

            User user = await _userManager.FindByEmailAsync(linkedinUser.Email);

            if (user == null)
            {
                user = new User
                {
                    UserName      = linkedinUser.Email.Split("@")[0],
                    NickName      = linkedinUser.LocalizedFirstName + " " + linkedinUser.LocalizedLastName,
                    Email         = linkedinUser.Email,
                    PhotoUrl      = await _photoController.UploadAvatarByUrl(linkedinUser.PhotoUrl),
                    RegisteredVia = "Linkedin",
                    Created       = DateTime.Now,
                    LastActive    = DateTime.Now
                };
                var result = await _userManager.CreateAsync(user);

                if (!result.Succeeded)
                {
                    return(BadRequest("User not created"));
                }

                var res = _userManager.AddToRoleAsync(user, "User").Result;
                if (!res.Succeeded)
                {
                    return(BadRequest("error on adding role for user"));
                }
            }
            // generate the jwt for the local user...
            var userForToken = await _userManager.FindByEmailAsync(user.Email);

            if (userForToken == null)
            {
                return(BadRequest("cant create user"));
            }

            string token = AppTokens.GenerateJwtToken(userForToken, _config, _userManager).Result;

            var userForReturnDto = _mapper.Map <UserForReturnDto>(userForToken);

            return(Ok(new { token = token, user = userForReturnDto }));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> FbLogin(FbUserAuthCodeDto fbUserAuthCodeDto)
        {
            string fbAuthToken = await ExchangeFbCodeToFbUserToken(fbUserAuthCodeDto.fbAuthCode);

            FbUser fbUser = await GetFbUser(fbAuthToken);

            User user = await _userManager.FindByEmailAsync(fbUser.Email);

            if (user == null)
            {
                user = new User
                {
                    UserName = fbUser.Email.Split("@")[0],
                    NickName = fbUser.Name,
                    Email    = fbUser.Email,
                    PhotoUrl = await _photoController.UploadAvatarByUrl(fbUser.Picture.Data.Url)
                };
                var result = await _userManager.CreateAsync(user);

                if (!result.Succeeded)
                {
                    return(BadRequest("User not created"));
                }

                var res = _userManager.AddToRoleAsync(user, "User").Result;
                if (!res.Succeeded)
                {
                    return(BadRequest("error on adding role for user"));
                }
            }

            // generate the jwt for the local user...
            var userForToken = await _userManager.FindByEmailAsync(user.Email);

            if (userForToken == null)
            {
                return(BadRequest("cant create user"));
            }

            string token = AppTokens.GenerateJwtToken(userForToken, _config, _userManager).Result;

            var userForReturnDto = _mapper.Map <UserForReturnDto>(userForToken);

            return(Ok(new { token = token, user = userForReturnDto }));
        }
Exemplo n.º 3
0
        public async Task <IActionResult> Login(UserForLoginDto userForLoginDto)
        {
            var user = await _userManager.FindByEmailAsync(userForLoginDto.Email);

            if (user == null)
            {
                return(Unauthorized());
            }
            var result = await _signInManager.CheckPasswordSignInAsync(user, userForLoginDto.Password, false);

            if (result.Succeeded)
            {
                string token = await AppTokens.GenerateJwtToken(user, _config, _userManager);

                var userForReturnDto = _mapper.Map <UserForReturnDto>(user);
                return(Ok(new { token = token, user = userForReturnDto }));
            }
            return(Unauthorized());
        }