public async Task UpdateUserConnection(string token, string connectionId)
        {
            var userId = JwtDecoder.GetUserIdFromToken(token);
            var user   = await _context.Users.Include(u => u.Connection).FirstOrDefaultAsync(usr => usr.Id == userId);

            if (user == null)
            {
                return;
            }

            if (user.Connection != null)
            {
                user.Connection.ConnectionId = connectionId;


                _context.UserConnections.Update(user.Connection);
            }
            else
            {
                user.Connection = new UserConnection()
                {
                    ConnectionId = connectionId
                };
            }

            await _context.SaveChangesAsync();
        }
Ejemplo n.º 2
0
        //protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request,
        //            CancellationToken cancellationToken)
        //{
        //    HttpResponseMessage errorResponse = null;

        //    try
        //    {
        //        IEnumerable<string> authHeaderValues;
        //        request.Headers.TryGetValues("Authorization", out authHeaderValues);


        //        if (authHeaderValues == null)
        //            return base.SendAsync(request, cancellationToken); // cross fingers

        //        var bearerToken = authHeaderValues.ElementAt(0);
        //        var token = bearerToken.StartsWith("Bearer ") ? bearerToken.Substring(7) : bearerToken;
        //        var secret = WebConfigurationManager.AppSettings.Get("jwtKey");
        //        Thread.CurrentPrincipal = ValidateToken(
        //            token,
        //            secret,
        //            true
        //            );

        //        if (HttpContext.Current != null)
        //        {
        //            HttpContext.Current.User = Thread.CurrentPrincipal;
        //        }
        //    }
        //    catch (SignatureVerificationException ex)
        //    {
        //        errorResponse = request.CreateErrorResponse(HttpStatusCode.Unauthorized, ex.Message);
        //    }
        //    catch (Exception ex)
        //    {
        //        errorResponse = request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message);
        //    }


        //    return errorResponse != null
        //        ? Task.FromResult(errorResponse)
        //        : base.SendAsync(request, cancellationToken);
        //}

        public static void OnAuthenticateRequest(IOwinContext context)
        {
            var requestHeader = context.Request.Headers.Get("Authorization");

            if (requestHeader != null)
            {
                int userId   = Convert.ToInt32(JwtDecoder.GetUserIdFromToken(requestHeader).ToString());
                var identity = new GenericIdentity(userId.ToString(), "StakersClubOwinAuthentication");
                //context.Authentication.User = new ClaimsPrincipal(identity);

                var token  = requestHeader.StartsWith("Bearer ") ? requestHeader.Substring(7) : requestHeader;
                var secret = WebConfigurationManager.AppSettings.Get("jwtKey");
                Thread.CurrentPrincipal     = ValidateToken(token, secret, true);
                context.Authentication.User = (ClaimsPrincipal)Thread.CurrentPrincipal;
                //if (HttpContext.Current != null)
                //{
                //    HttpContext.Current.User = Thread.CurrentPrincipal;
                //}
            }
        }
 public async Task <User> GetByToken(string token)
 {
     return(await GetById(JwtDecoder.GetUserIdFromToken(token)));
 }