예제 #1
0
 public Task<bool> RemoveAsync(int userId)
 {
     var entity = new User {Id = userId};
     UnitOfWork.Users.Attach(entity);
     UnitOfWork.Users.Remove(entity);
     return UnitOfWork.SaveChangesAsync().ContinueWith(x => x.Result > 0);
 }
예제 #2
0
        public Task<ClaimsIdentity> CreateIdentityAsync(User user, string authenticationType, ClaimsIdentity externalIdentity)
        {
            var identity = new ClaimsIdentity(authenticationType, ClaimTypes.Name, ClaimTypes.Role);

            identity.AddClaims(externalIdentity.Claims);
            identity.AddClaim(new Claim(ClaimTypes.Name, user.Name, ClaimValueTypes.String));
            identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.Id.ToString(), ClaimValueTypes.String));

            if (user.IsAdmin)
            {
                identity.AddClaim(new Claim(ClaimTypes.Role, "admin", ClaimValueTypes.String));
            }

            if (externalIdentity.HasClaim(claim => claim.Type == "urn:reddit:moderator_of"))
            {
                identity.AddClaim(new Claim(ClaimTypes.Role, "moderator", ClaimValueTypes.String));
            }

            if (user.IsBanned)
            {
                identity.AddClaim(new Claim(ClaimTypes.Role, "banned", ClaimValueTypes.String));
            }

            return Task.FromResult(identity);
        }
예제 #3
0
 private async Task SignInAsync(ClaimsIdentity externalIdentity, User user)
 {
     var owin = HttpContext.GetOwinContext();
     // kill the reddit cookie
     owin.Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie);
     var identity =
         await _users.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie, externalIdentity);
     await Task.Run(() => owin.Authentication.SignIn(new AuthenticationProperties {IsPersistent = true}, identity));
 }
예제 #4
0
 public async Task<Summoner> AddSummonerAsync(User user, int summonerId, string region, string name)
 {
     user.Summoners.Add(new Summoner
     {
         LeagueInfo = new LeagueInfo(),
         Name = name,
         Region = region,
         SummonerId = summonerId,
         User = user
     });
     await UnitOfWork.SaveChangesAsync();
     return user.Summoners.First(summoner => summoner.SummonerId == summonerId);
 }
예제 #5
0
        public async Task<User> CreateAsync(string name)
        {
            var user = new User {Name = name};

            if (await Roles.IsAdminAsync(name))
            {
                user.IsAdmin = true;
            }

            UnitOfWork.Users.Add(user);
            if (await UnitOfWork.SaveChangesAsync() == 0)
            {
                throw new InvalidOperationException("Error saving user to data store.");
            }
            return user;
        }
예제 #6
0
 public Task<bool> AddAsync(User user)
 {
     UnitOfWork.Users.Add(user);
     return UnitOfWork.SaveChangesAsync().ContinueWith(x => x.Result > 0);
 }
 private async Task<string> GetFlairTextAsync(User user)
 {
     var summoner = await _summoners.GetActiveSummonerAsync(user);
     return summoner == null ? "" : LeagueUtil.Stringify(summoner.LeagueInfo);
 }
예제 #8
0
 public Task<Summoner> GetActiveSummonerAsync(User user)
 {
     return Task.Run(() => user.Summoners.FirstOrDefault(x => x.IsActive));
 }