Ejemplo n.º 1
0
            public async Task <User> Handle(Query request, CancellationToken cancellationToken)
            {
                var user = await _userManager.FindByEmailAsync(request.Email);

                if (null == user)
                {
                    throw new RestException(HttpStatusCode.Unauthorized);
                }

                if (!user.EmailConfirmed)
                {
                    throw new RestException(HttpStatusCode.BadRequest, new { Email = "Email not verified" });
                }

                var result = await _signInManager.CheckPasswordSignInAsync(user, request.Password, false);

                if (result.Succeeded)
                {
                    var refreshToken = _jWTGenerator.GenerateRefreshToken();
                    user.RefreshTokens.Add(refreshToken);
                    await _userManager.UpdateAsync(user);

                    return(new User(user, _jWTGenerator, refreshToken.Token));
                }

                throw new RestException(HttpStatusCode.Unauthorized);
            }
Ejemplo n.º 2
0
            public async Task <User> Handle(Query request, CancellationToken cancellationToken)
            {
                var user = await _userManager.FindByNameAsync(_userAccessor.GetCurrentUsername());

                var refreshToken = _jWTGenerator.GenerateRefreshToken();

                user.RefreshTokens.Add(refreshToken);
                await _userManager.UpdateAsync(user);

                return(new User(user, _jWTGenerator, refreshToken.Token));
            }
Ejemplo n.º 3
0
            public async Task <User> Handle(Query request, CancellationToken cancellationToken)
            {
                var userInfo = await _facebookAccessor.FacebookLogin(request.AccessToken);

                if (userInfo == null)
                {
                    throw new RestException(HttpStatusCode.BadGateway, new { User = "******" });
                }

                var user = await _userManager.FindByEmailAsync(userInfo.Email);

                var refreshToken = _jWTGenerator.GenerateRefreshToken();

                if (user != null)
                {
                    user.RefreshTokens.Add(refreshToken);
                    await _userManager.UpdateAsync(user);

                    return(new User(user, _jWTGenerator, refreshToken.Token));
                }

                user = new AppUser
                {
                    DisplayName    = userInfo.Name,
                    Email          = userInfo.Email,
                    Id             = userInfo.Id,
                    UserName       = "******" + userInfo.Id,
                    EmailConfirmed = true
                };

                var photo = new Photo
                {
                    Id     = "fb_" + userInfo.Id,
                    Url    = userInfo.picture.Data.Url,
                    IsMain = true
                };

                user.Photos.Add(photo);
                user.RefreshTokens.Add(refreshToken);

                var result = await _userManager.CreateAsync(user);

                if (!result.Succeeded)
                {
                    throw new RestException(HttpStatusCode.BadRequest, new { User = "******" });
                }


                return(new User(user, _jWTGenerator, refreshToken.Token));
            }
Ejemplo n.º 4
0
            public async Task <User> Handle(Command request, CancellationToken cancellationToken)
            {
                //hanlder logic
                var user = await _userManager.FindByNameAsync(_userAccessor.GetCurrentUsername());

                var oldToken = user.RefreshTokens.SingleOrDefault(x => x.Token == request.RefreshToken);

                if (oldToken != null && !oldToken.IsActive)
                {
                    throw new RestException(HttpStatusCode.Unauthorized);
                }

                if (oldToken != null)
                {
                    oldToken.Revoked = DateTime.UtcNow;
                }

                var newRefreshToken = _jWTGenerator.GenerateRefreshToken();

                user.RefreshTokens.Add(newRefreshToken);
                await _userManager.UpdateAsync(user);

                return(new User(user, _jWTGenerator, newRefreshToken.Token));
            }