public Token Authenticate(string login, string password) { // authentication by the Login and Password var now = CommonService.Now; Token result = null; // создаем новый контекст, дабы не использовать "уже загруженные" сущности using (var dbContext = new FamilyDbContext()) { UserToken userToken = null; // authentication for Managers if (userToken == null) { // находим пользователя по логину var manager = dbContext.Set <Manager>() .Include(t => t.Person.Avatar) .Include(t => t.Roles) //.Where(m => m.Person.State == Common.Enums.ObjectState.Active) .FirstOrDefault(m => m.Login.ToLower() == login.ToLower()); if (manager != null && CommonService.VerifyPassword(password, manager.Password)) { userToken = UserToken.Create(manager, null, now.AddHours(DefaultExpirationHours)); } } // authentication for Guests if (userToken == null) { var guest = dbContext.Set <Guest>() .FirstOrDefault(g => g.Date <= now && now <= g.Expire && g.Login.ToLower() == login.ToLower()); if (guest != null && CommonService.VerifyPassword(password, guest.Password)) { userToken = UserToken.Create(null, guest, guest.Expire); } } // saving new token if (userToken != null) { dbContext.Set <UserToken>().Add(userToken); dbContext.SaveChanges(); result = this.BuildToken(userToken); } } return(result); }
//protected Token CreateToken(Manager manager, int hours = DefaultExpirationHours) //{ // var now = CommonService.Now; // if (manager == null) // return null; // // берем пользователя из токена и проверяем на активность (не удален) // var person = manager?.Person; // if (person == null) // return null; // var key = Guid.NewGuid().ToString(); // // создаем стандартный токен // var token = new Token(0, person.ID, manager.ID, manager.Login, key, now.AddHours(DefaultExpirationHours), person.Name, person.Avatar) // { // Roles = manager.Roles.Select(r => r.Name).ToArray() // }; // // создаем доступ к Azure для просмотра материалов // var sas = this.CreateSASToken(); // if (!String.IsNullOrWhiteSpace(sas)) // token.Values.Add(MaterialDataProvider.StorageSASTokenName, sas); // return token; //} public Token Authenticate(string token) { // authentication by the Token var now = CommonService.Now; Token result = null; // создаем новый контекст, дабы не использовать "уже загруженные" сущности using (var dbContext = new FamilyDbContext()) { // находим токин пользователя в базе по заданному коду токена var managerToken = dbContext.Set <UserToken>() .Include(t => t.Manager.Roles) .Include(t => t.Manager.Person.Avatar) .Include(t => t.Guest) //.Where(t => t.Manager.Person.State == Common.Enums.ObjectState.Active) .SingleOrDefault(t => t.Date <= now && now <= t.Expire && t.Code.ToLower() == token.ToLower()); if (managerToken == null) { return(null); } result = this.BuildToken(managerToken); } return(result); }
public void test_get_persons() { FamilyDbContext context = new FamilyDbContext(); var persons = context.Set <Person>().ToList(); var repo = new PersonRepository(context); File.WriteAllText("hello.txt", "hello"); var find = repo.FindAll("ли"); Assert.IsTrue(find.Count() > 0); }