예제 #1
0
        /// <summary>
        /// Crée une CarteUtilisateur à partir des Claims envoyées avec une requête Http.
        /// Fixe l'Utilisateur de la carte avec son Archives, avec ses Clients incluant leurs Archives et leur Site incluant son Fournisseur
        /// et avec ses Fournisseurs incluant leurs Archives et leur Site.
        /// </summary>
        /// <param name="httpContext">le HttpContext de la requête</param>
        /// <returns>la CarteUtilisateur créée, ou null si les Claims ne sont pas valide</returns>
        public async Task <CarteUtilisateur> CréeCarteUtilisateur(HttpContext httpContext)
        {
            CarteUtilisateur    carte  = new CarteUtilisateur(_context);
            ClaimsPrincipal     user   = httpContext.User;
            IEnumerable <Claim> claims = user.Identities.FirstOrDefault()?.Claims;

            if (claims == null || claims.Count() == 0)
            {
                return(carte);
            }
            string userId    = claims.Where(c => c.Type == JwtClaims.UserId).First()?.Value;
            string userName  = claims.Where(c => c.Type == JwtClaims.UserName).First()?.Value;
            string uid       = claims.Where(c => c.Type == JwtClaims.UtilisateurId).First()?.Value;
            int    sessionId = int.Parse(claims.Where(c => c.Type == JwtClaims.SessionId).First()?.Value);

            Utilisateur utilisateur = await _context.Utilisateur
                                      .Where(u => u.Id == userId)
                                      .FirstOrDefaultAsync();

            if (utilisateur == null)
            {
                return(carte);
            }
            if (userName != utilisateur.UserName)
            {
                // fausse carte
                return(carte);
            }

            await carte.FixeUtilisateur(utilisateur);

            carte.SessionId = sessionId;

            return(carte);
        }
예제 #2
0
        /// <summary>
        /// Crée une CarteUtilisateur à partir d'un Utilisateur.
        /// Fixe l'Utilisateur de la carte avec son Archives, avec ses Clients incluant leurs Archives et leur Site incluant son Fournisseur
        /// et avec ses Fournisseurs incluant leurs Archives et leur Site.
        /// </summary>
        /// <param name="utilisateur"></param>
        /// <returns>la CarteUtilisateur créée</returns>
        public async Task <CarteUtilisateur> CréeCarteUtilisateur(Utilisateur utilisateur)
        {
            CarteUtilisateur carte = new CarteUtilisateur(_context);
            await carte.FixeUtilisateur(utilisateur);

            return(carte);
        }