public static DbSet <E> GetDbSet <E>(this Factory <E> factory, ScribsDbContext db) where E : Entity, new() { if (typeof(E) == typeof(User)) { return(db.Users as DbSet <E>); } if (typeof(E) == typeof(Access)) { return(db.Accesses as DbSet <E>); } if (typeof(E) == typeof(SheetTemplate)) { return(db.SheetTemplates as DbSet <E>); } if (typeof(E) == typeof(SheetTemplateField)) { return(db.SheetTemplateFields as DbSet <E>); } if (typeof(E) == typeof(Sheet)) { return(db.Sheets as DbSet <E>); } if (typeof(E) == typeof(SheetField)) { return(db.SheetFields as DbSet <E>); } throw new NotImplementedException(); }
public static ClaimsPrincipal GetPrincipal(ScribsDbContext db, JwtSecurityToken jwtToken, out Access access) { access = null; try { var tokenHandler = new JwtSecurityTokenHandler(); var claims = jwtToken.Claims.ToList(); var claim = claims.Find(o => o.Type == "nameid"); var user = User.Factory.GetInstance(db, int.Parse(claim.Value)); access = db.Accesses.FirstOrDefault(o => o.UserId == user.Id && o.Status == Status.Active); if (access == null) { return(null); } var symmetricKey = Convert.FromBase64String(access.Secret); var validationParameters = new TokenValidationParameters() { RequireExpirationTime = true, ValidateIssuer = false, ValidateAudience = false, IssuerSigningKey = new SymmetricSecurityKey(symmetricKey) }; SecurityToken securityToken; var principal = tokenHandler.ValidateToken(jwtToken.RawData, validationParameters, out securityToken); return(principal); } catch (Exception) { return(null); } }
public static string GenerateToken(ScribsDbContext db, User user, UserModel model) { var secretBase64 = Convert.ToBase64String(Guid.NewGuid().ToByteArray()); var secret = Convert.FromBase64String(secretBase64); var tokenHandler = new JwtSecurityTokenHandler(); var now = DateTime.UtcNow; var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new[] { new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()), new Claim(ClaimTypes.Name, user.Name.ToString()), new Claim(ClaimTypes.Email, user.Mail.ToString()) }), Expires = now.AddMonths(1), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(secret), SecurityAlgorithms.HmacSha256Signature) }; var stoken = tokenHandler.CreateToken(tokenDescriptor); var token = tokenHandler.WriteToken(stoken); var access = new Access { Token = token, Secret = secretBase64, User = user, CTime = DateTime.Now, MTime = DateTime.Now }; db.Accesses.Add(access); db.SaveChanges(); return(token); }
public async Task <E> GetInstanceAsync(ScribsDbContext db, int id) { var set = GetSet(db); var entity = await set.FindAsync(id); entity.db = db; return(entity); }
public E GetInstance(ScribsDbContext db, int id) { var set = GetSet(db); var entity = set.Find(id); entity.db = db; return(entity); }
public E CreateInstance(ScribsDbContext db) { var entity = new E { db = db }; GetSet(db).Add(entity); return(entity); }
public File(ScribsDbContext db, Project project, XElement xelement) : base(db, project, xelement) { }
public void Delete(ScribsDbContext db, E entity) { var set = GetSet(db); set.Remove(entity); }
DbSet <E> GetSet(ScribsDbContext db) => this.GetDbSet <E>(db);
public Directory(ScribsDbContext db, Project project, XElement xelement) : base(db, project, xelement) { }
public Project(ScribsDbContext db, XElement xelement) : base(db, null, xelement) => throw new NotImplementedException();