using Hushian.Application.Constants; using Hushian.Application.Models; using Microsoft.IdentityModel.Tokens; using System; using System.Collections.Generic; using System.Globalization; using System.IdentityModel.Tokens.Jwt; using System.Linq; using System.Security.Claims; using System.Text; using System.Threading.Tasks; namespace Hushian.Application.Services { public static class ExMethod { public static string GetDatePersian(this DateTime d) { PersianCalendar pc = new PersianCalendar(); return string.Format("{0}/{1}/{2}", pc.GetYear(d), pc.GetMonth(d), pc.GetDayOfMonth(d)); } public static string GetTime(this DateTime d) { return d.Hour.ToString() + ":" + d.Minute.ToString(); } public static JwtSecurityToken GenerateToken(this JwtSettings _jwtSettings,string UserName, int userId, string Role) { var claims = new[] { new Claim(JwtRegisteredClaimNames.Sub, //Role=="User" ? "U"+userId.ToString() //:Role=="Company" ? "C"+userId.ToString() //: userId.ToString()), new Claim(ClaimTypes.NameIdentifier, UserName), new Claim(CustomClaimTypes.Uid,userId.ToString()), new Claim(ClaimTypes.Role, Role) }; var symmetricSecurityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_jwtSettings.Key)); var signingCredentials = new SigningCredentials(symmetricSecurityKey, SecurityAlgorithms.HmacSha256); var jwtSecurityToken = new JwtSecurityToken( issuer: _jwtSettings.Issuer, audience: _jwtSettings.Audience, claims: claims, expires: DateTime.UtcNow.AddMinutes(_jwtSettings.DurationInMinutes), signingCredentials: signingCredentials); //user.Token = new JwtSecurityTokenHandler().WriteToken(jwtSecurityToken); //var resultupdateuser = await _userManager.UpdateAsync(user); return jwtSecurityToken; } } }