Exemplo n.º 1
0
        // https://www.c-sharpcorner.com/article/building-api-gateway-using-ocelot-in-asp-net-core-part-two/
        //private static IConfiguration configuration;
        public static async Task <JsonResult> GetToken(ContacProDBContext _context, IConfiguration configuration,
                                                       string email, string password)
        {
            JsonResult response = new JsonResult("");

            try
            {
                var login = await _context.Professionnels.Where(p => p.Courriel == email).FirstOrDefaultAsync <Professionnel>();

                if (login != null && password.Equals(login.Mdp))
                {
                    DateTime now = DateTime.UtcNow;

                    string secret = configuration.GetValue <string>("Audience:Secret");
                    string iss    = configuration.GetValue <string>("Audience:Iss");
                    string aud    = configuration.GetValue <string>("Audience:Aud");
                    var    claims = new Claim[]
                    {
                        new Claim(JwtRegisteredClaimNames.Sub, login.Courriel),
                        new Claim(JwtRegisteredClaimNames.Sub, login.UtilisateurID + ""),
                        new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                        new Claim(JwtRegisteredClaimNames.Iat, now.ToUniversalTime().ToString(), ClaimValueTypes.Integer64)
                    };

                    var signingKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(secret));
                    var tokenValidationParameters = new TokenValidationParameters
                    {
                        ValidateIssuerSigningKey = true,
                        IssuerSigningKey         = signingKey,
                        ValidateIssuer           = true,
                        ValidIssuer           = iss,
                        ValidateAudience      = true,
                        ValidAudience         = aud,
                        ValidateLifetime      = true,
                        ClockSkew             = TimeSpan.Zero,
                        RequireExpirationTime = true,
                        //  RoleClaimType = login.Role  //// role client
                    };

                    var jwt = new JwtSecurityToken(
                        issuer: iss,
                        audience: aud,
                        claims: claims,
                        notBefore: now,
                        expires: now.Add(TimeSpan.FromMinutes(30)),
                        signingCredentials: new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256)
                        );
                    var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt);

                    var responseJson = new
                    {
                        access_token = encodedJwt,
                        personne     = login,
                        expires_in   = (int)TimeSpan.FromMinutes(30).TotalSeconds
                    };

                    //////////////////
                    response.Value      = responseJson;
                    response.StatusCode = 200;
                }
                else
                {
                    response.Value      = "UnAuthorized";
                    response.StatusCode = 400;
                }
            } catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
                response.Value      = ex.Message;
                response.StatusCode = 400;
            }


            return(response);
        }
Exemplo n.º 2
0
 public ProfessionnelsController(ContacProDBContext context, IConfiguration iConfig)
 {
     _context      = context;
     configuration = iConfig;
 }
Exemplo n.º 3
0
 public PrestationsController(ContacProDBContext context)
 {
     _context = context;
 }
Exemplo n.º 4
0
 public EntentesController(ContacProDBContext context)
 {
     _context = context;
 }
Exemplo n.º 5
0
 public MessagesController(ContacProDBContext context)
 {
     _context = context;
 }
Exemplo n.º 6
0
 public ClientsController(ContacProDBContext context)
 {
     _context = context;
 }