示例#1
0
            public async Task <User> Handle(Query request, CancellationToken cancellationToken)
            {
                var userInfo = await m_facebookAccessor.FacebookLogin(request.AccessToken);

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

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

                var refreshToken = m_jwtGenerator.GenerateRefreshtoken();

                if (user != null)
                {
                    user.RefreshTokens.Add(refreshToken);
                    await m_userManager.UpdateAsync(user);
                }
                else
                {
                    user = await this.CreateUser(userInfo, refreshToken);
                }

                return(new User(user, m_jwtGenerator, refreshToken.Token));
            }
示例#2
0
            public async Task <User> Handle(Query request, CancellationToken cancellationToken)
            {
                var user = await m_userManager.FindByEmailAsync(request.Email);

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

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

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

                if (!result.Succeeded)
                {
                    throw new RestException(HttpStatusCode.Unauthorized);
                }

                var refreshToken = m_jwtGenerator.GenerateRefreshtoken();

                user.RefreshTokens.Add(refreshToken);

                await m_userManager.UpdateAsync(user);

                return(new User(user, m_jwtGenerator, refreshToken.Token));
            }
示例#3
0
            public async Task <User> Handle(Command request, CancellationToken cancellationToken)
            {
                var user = await m_userManager.FindByNameAsync(m_userAccesor.GetCurrentUsername());

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

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

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

                var newRefreshToken = m_jwtGenerator.GenerateRefreshtoken();

                user.RefreshTokens.Add(newRefreshToken);

                await m_userManager.UpdateAsync(user);

                return(new User(user, m_jwtGenerator, newRefreshToken.Token));
            }
示例#4
0
            public async Task <User> Handle(Query request, CancellationToken cancellationToken)
            {
                var user = await m_userManager.FindByNameAsync(m_userAccessor.GetCurrentUsername());

                var refreshToken = m_jwtGenerator.GenerateRefreshtoken();

                user.RefreshTokens.Add(refreshToken);

                await m_userManager.UpdateAsync(user);

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