Пример #1
0
 public async Task <IActionResult> Index()
 {
     if (AuthorizeManager.InAdminGroup(User.Identity.Name))
     {
         // 返回所有產品
         return(View(await _context.Product2.OrderBy(m => m.SellerEmail).ToListAsync()));
     }
     else if (AuthorizeManager.InSellerGroup(User.Identity.Name))
     {
         // 返回符合上架者 Id 的產品
         return(View(await _context.Product2.Where(m => m.SellerId == User.FindFirstValue(ClaimTypes.NameIdentifier)).ToListAsync()));
     }
     else
     {
         return(NotFound());
     }
 }
Пример #2
0
        public ActionResult Delete(string id, int returnPage = 0)
        {
            if (!AuthorizeManager.InAdminGroup(User.Identity.Name))
            {
                return(NotFound());
            }

            if (returnPage != 0)
            {
                HttpContext.Session.SetInt32("returnPage", returnPage);
            }

            var user = _context.Users.FirstOrDefault(u => u.Id == id);

            // 令超級管理員不能被刪除
            if (user.Email == AuthorizeManager.SuperAdmin)
            {
                return(NotFound());
            }

            // 查看該使用者是否為賣方,如果是...則刪除其產品
            if (AuthorizeManager.InSellerGroup(user.Email))
            {
                var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);

                _context.RemoveRange(_context.Product2.Where(m => m.SellerId == userId));
            }

            // 查看該使用者是否為特權用戶,如果是...則從特權資料表和 HashTable 中移除
            if (AuthorizeManager.InAuthorizedMember(user.Email))
            {
                AuthorizeManager.UpdateAuthority("DeleteAll", _context, user.Email, null, null);
            }

            // 刪除該使用者
            _context.Users.Remove(user);
            _context.SaveChanges();
            _logger.LogWarning($"[{User.Identity.Name}]刪除了用戶[{user.Email}]");

            // 返回之前的分頁
            int?TryGetPage = HttpContext.Session.GetInt32("returnPage");
            int page       = TryGetPage != null ? (int)TryGetPage : 1;

            return(RedirectToAction("Index", new { page }));
        }