Пример #1
0
 public IActionResult Area()
 {
     claim            = (JwtClaim)_accessor.HttpContext.Items["user"];
     ViewBag.username = claim.username;
     ViewBag.area     = claim.area;
     return(View());
 }
Пример #2
0
 public ResponseResult <string> addArea([FromQuery] string token, string name, string abb)
 {
     claim = (JwtClaim)_accessor.HttpContext.Items["user"];
     try
     {
         if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(abb))
         {
             return(ResponseResult <string> .Error("参数异常"));
         }
         SYS_AREA area = new SYS_AREA {
             NAME = name, ABBREVIATION = abb
         };
         var b = SystemService.addArea(area, connstr);
         if (b)
         {
             return(ResponseResult <string> .Success("操作成功", "操作成功"));
         }
         else
         {
             return(ResponseResult <string> .Success("操作失败", "操作失败"));
         }
     }
     catch (Exception ex)
     {
         return(ResponseResult <string> .Error("系统异常"));
     }
 }
Пример #3
0
 public ResponseResult <string> PostLogins(string username, string password)
 {
     if (!string.IsNullOrEmpty(username.Trim()) && !string.IsNullOrEmpty(password.Trim()))
     {
         try
         {
             string token = "";
             password = MD5Utils.decode(password);
             var user = SystemService.AuthUser(username, password, connstr);
             if (user != null)
             {
                 JwtUtils  jwt    = new JwtUtils();
                 JwtHeader header = new JwtHeader();
                 header.alg = AlgEnum.HS256;
                 JwtClaim claim = new JwtClaim();
                 claim.isadmin  = user.AREA == 0 ? true : false;
                 claim.area     = user.AREA;
                 claim.uid      = user.ID;
                 claim.username = user.USERNAME;
                 claim.exp      = DateTime.Now.AddMinutes(30).ToBinary();
                 token          = jwt.EncodingJwt(header, claim);
                 return(ResponseResult <string> .Success(token, "登录成功"));
             }
         }
         catch (Exception ex)
         {
             Console.Write(ex.Message);
             return(ResponseResult <string> .Error("登录失败"));
         }
     }
     return(ResponseResult <string> .Error("登录失败"));
 }
Пример #4
0
 public ResponseResult <string> editPwd([FromQuery] string token, string name, int area, string oldpwd, string newpwd)
 {
     claim = (JwtClaim)_accessor.HttpContext.Items["user"];
     try
     {
         var user = SystemService.getUser(connstr).Where(u => u.USERNAME == name.Trim() && u.AREA == area && u.PASSWORD == MD5Utils.decode(oldpwd)).FirstOrDefault();
         if (user == null)
         {
             return(ResponseResult <string> .Error("密码验证不通过"));
         }
         var PASSWORD = MD5Utils.decode(newpwd);
         var b        = SystemService.editUserPwd(user.ID, PASSWORD, connstr);
         if (b)
         {
             return(ResponseResult <string> .Success("操作成功", "操作成功"));
         }
         else
         {
             return(ResponseResult <string> .Error("操作失败"));
         }
     }
     catch (Exception ex)
     {
         return(ResponseResult <string> .Error("系统异常"));
     }
 }
Пример #5
0
 public ResponseResult <string> addRoom([FromQuery] string token, string name, int area, int status)
 {
     claim = (JwtClaim)_accessor.HttpContext.Items["user"];
     try
     {
         if (string.IsNullOrEmpty(name))
         {
             return(ResponseResult <string> .Error("参数异常"));
         }
         SYS_ROOMINFO room = new SYS_ROOMINFO {
             NAME = name, AREA = area, STATUS = status
         };
         var b = SystemService.addRoom(room, connstr);
         if (b)
         {
             return(ResponseResult <string> .Success("操作成功", "操作成功"));
         }
         else
         {
             return(ResponseResult <string> .Success("操作失败", "操作失败"));
         }
     }
     catch (Exception ex)
     {
         return(ResponseResult <string> .Error("系统异常"));
     }
 }
Пример #6
0
        public T GetClaim <T>(string jwt, JwtClaim claim)
        {
            if (jwt == null)
            {
                throw new UnprocessableException();
            }

            string       key      = Enum.GetName(typeof(JwtClaim), claim);
            var          handler  = new JsonWebTokenHandler();
            JsonWebToken jwtToken = handler.ReadJsonWebToken(jwt);

            string foundClaim = jwtToken.Claims?
                                .FirstOrDefault(c => c.Type.Equals(key, StringComparison.OrdinalIgnoreCase))?
                                .Value;

            if (typeof(T) == typeof(Guid))
            {
                return((T)Convert.ChangeType(Guid.Parse(foundClaim), typeof(T), CultureInfo.InvariantCulture));
            }
            if (typeof(T) == typeof(AccountRole))
            {
                return((T)Convert.ChangeType(Enum.Parse <AccountRole>(foundClaim), typeof(T), CultureInfo.InvariantCulture));
            }

            return(default);
Пример #7
0
        public static TokenInfo GenerateToken(JwtClaim claim)
        {
            string jsonClaim = JsonConvert.SerializeObject(claim);

            var claims = new[]
            {
                new Claim(JwtRegisteredClaimNames.Sub, jsonClaim),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
            };

            var credentials = new SigningCredentials(
                new SymmetricSecurityKey(
                    Encoding.UTF8.GetBytes(configuration["SigningKey"])),
                SecurityAlgorithms.HmacSha256);

            var expirationDate = DateTime.UtcNow.Add(expirationTime);

            var token = new JwtSecurityToken
                        (
                issuer: configuration["Issuer"],
                audience: configuration["Audience"],
                claims: claims,
                expires: expirationDate,
                notBefore: DateTime.UtcNow,
                signingCredentials: credentials
                        );

            var tokenInfo = new TokenInfo()
            {
                Token          = new JwtSecurityTokenHandler().WriteToken(token),
                ExpirationTime = expirationDate
            };

            return(tokenInfo);
        }
Пример #8
0
        public ResponseResult <string> editProgress([FromQuery] string token, string id, int progress)
        {
            claim = (JwtClaim)_accessor.HttpContext.Items["user"];
            try
            {
                if (progress < 0 || progress > 100)
                {
                    return(ResponseResult <string> .Error("输入异常"));
                }

                var b = ToDoService.editProgress(id, progress, connstr);
                if (b)
                {
                    return(ResponseResult <string> .Success("操作成功", "操作成功"));
                }
                else
                {
                    return(ResponseResult <string> .Error("操作失败"));
                }
            }
            catch (Exception ex)
            {
                return(ResponseResult <string> .Error("系统异常"));
            }
        }
Пример #9
0
 public ResponseResult <string> addToDo([FromQuery] string token, string title, string content, string proirity)
 {
     claim = (JwtClaim)_accessor.HttpContext.Items["user"];
     try
     {
         if (string.IsNullOrEmpty(proirity) || string.IsNullOrEmpty(title))
         {
             return(ResponseResult <string> .Error("操作异常"));
         }
         SYS_TODOLIST area = new SYS_TODOLIST {
             ID = Guid.NewGuid().ToString(), TITLE = title, CONTENT = content, PRIORITY = int.Parse(proirity), CREATETIME = DateTime.Now, UID = claim.uid, PROGRESS = 0
         };
         var b = ToDoService.addToDo(area, connstr);
         if (b)
         {
             return(ResponseResult <string> .Success("操作成功", "操作成功"));
         }
         else
         {
             return(ResponseResult <string> .Success("操作失败", "操作失败"));
         }
     }
     catch (Exception ex)
     {
         return(ResponseResult <string> .Error("系统异常"));
     }
 }
Пример #10
0
 public ResponseResult <string> addUser([FromQuery] string token, string username, int area, string password, string email)
 {
     claim = (JwtClaim)_accessor.HttpContext.Items["user"];
     try
     {
         if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password) || area == 0)
         {
             return(ResponseResult <string> .Error("参数异常"));
         }
         SYS_USER room = new SYS_USER {
             ID = Guid.NewGuid().ToString(), USERNAME = username, PASSWORD = MD5Utils.decode(password), AREA = area, EMAIL = email, UPDATETIME = DateTime.Now
         };
         var b = SystemService.addUser(room, connstr);
         if (b)
         {
             return(ResponseResult <string> .Success("操作成功", "操作成功"));
         }
         else
         {
             return(ResponseResult <string> .Success("操作失败", "操作失败"));
         }
     }
     catch (Exception ex)
     {
         return(ResponseResult <string> .Error("系统异常"));
     }
 }
Пример #11
0
 public ResponseResult <string> PostBook([FromQuery] string token, string meetname, string room, string day, string hour, int status)
 {
     claim = (JwtClaim)_accessor.HttpContext.Items["user"];
     try
     {
         //判断会议室是否停用
         bool isstop = SystemService.IsStop(room, connstr);
         if (!isstop)
         {
             var h         = hour.Split('至');
             var start_hh  = h[0].Split(':');
             var start_hor = start_hh[0];
             var start_min = start_hh.Count() <= 1?"00": start_hh[1];
             var end_hh    = h[1].Split(':');
             var end_hor   = end_hh[0];
             var end_min   = end_hh.Count() <= 1 ? "00" : end_hh[1];
             var starttime = DateTime.Parse(day + " " + start_hor + ":" + start_min);
             var endtime   = DateTime.Parse(day + " " + end_hor + ":" + end_min);
             if (starttime <= DateTime.Now)
             {
                 return(ResponseResult <string> .Success("你是要穿越吗?", "你是要穿越吗?"));
             }
             //判断时段是否可用
             bool enable = SystemService.AuthTime(room, starttime, endtime, connstr);
             if (enable)
             {
                 //入库
                 SYS_BOOKINFO book = new SYS_BOOKINFO {
                     MEETNAME  = meetname,
                     ROOMID    = room,
                     STARTTIME = starttime,
                     ENDTIME   = endtime,
                     STATUS    = status,
                     UID       = claim.uid
                 };
                 var b = SystemService.BookRoom(book, connstr);
                 if (b)
                 {
                     return(ResponseResult <string> .Success("操作成功", "操作成功"));
                 }
                 else
                 {
                     return(ResponseResult <string> .Success("操作失败", "操作失败"));
                 }
             }
             else
             {
                 return(ResponseResult <string> .Success("时间冲突", "时间冲突"));
             }
         }
         else
         {
             return(ResponseResult <string> .Success("会议室已停用", "会议室已停用"));
         }
     }
     catch (Exception ex)
     {
         return(ResponseResult <string> .Error("系统异常"));
     }
 }
Пример #12
0
 public IActionResult addArea()
 {
     claim            = (JwtClaim)_accessor.HttpContext.Items["user"];
     ViewBag.username = claim.username;
     ViewBag.area     = claim.area;
     ViewBag.model    = null;
     return(View("editArea"));
 }
Пример #13
0
        public IActionResult editArea(int id)
        {
            claim            = (JwtClaim)_accessor.HttpContext.Items["user"];
            ViewBag.username = claim.username;
            ViewBag.area     = claim.area;
            List <SYS_AREA> model = SystemService.getArea(connstr);
            var             res   = model.Where(m => m.ID == id).FirstOrDefault();

            ViewBag.model = res;
            return(View());
        }
        /// <summary>
        /// Get claims of user.
        /// </summary>
        /// <returns>Claims.</returns>
        private JwtClaim GetUserClaims()
        {
            var claims    = this.User.Claims;
            var jwtClaims = new JwtClaim
            {
                FromId              = claims.Where(claim => claim.Type == "fromId").Select(claim => claim.Value).First(),
                ServiceUrl          = claims.Where(claim => claim.Type == "serviceURL").Select(claim => claim.Value).First(),
                UserObjectIdentifer = claims.Where(claim => claim.Type == "userObjectIdentifer").Select(claim => claim.Value).First(),
            };

            return(jwtClaims);
        }
Пример #15
0
        public string getArea()
        {
            claim = (JwtClaim)_accessor.HttpContext.Items["user"];
            List <SYS_AREA> model = SystemService.getArea(connstr);
            LayTableModel <List <SYS_AREA> > table = new LayTableModel <List <SYS_AREA> >();

            table.message   = "success";
            table.code      = 200;
            table.total     = model.Count;
            table.rows      = new Rows <List <SYS_AREA> >();
            table.rows.item = new List <SYS_AREA>();
            table.rows.item = model;
            return(JsonConvert.SerializeObject(table));
        }
        public async Task <IActionResult> CreateTemplate([FromBody] CreateTemplateCommand command)
        {
            try
            {
                string          orgEmail        = JwtClaim.GetEmail(User);
                UserTemplateDTO createdTemplate = await this._service.Create(orgEmail, command);

                return(Created("template/", createdTemplate._tid));
            }
            catch (Exception e)
            {
                this._logger.LogError(e, e.Message);
                return(StatusCode(500));
            }
        }
Пример #17
0
        public IActionResult ShowJN(DateTime time)
        {
            claim            = (JwtClaim)_accessor.HttpContext.Items["user"];
            ViewBag.username = claim.username;
            ViewBag.area     = claim.area;
            if (time == DateTime.MinValue || time == null)
            {
                time = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd"));
            }
            List <ShowModel> showModels = getStatus(claim.area, time);

            ViewBag.model      = showModels;
            ViewBag.actionname = "ShowJN";
            ViewBag.time       = time;
            return(View("Show"));
        }
Пример #18
0
        public string getToDo()
        {
            claim = (JwtClaim)_accessor.HttpContext.Items["user"];
            if (claim.area == 0)
            {
                claim.uid = "";
            }
            List <ToDoModel> model = ToDoService.getToDo(claim.uid, connstr);
            LayTableModel <List <ToDoModel> > table = new LayTableModel <List <ToDoModel> >();

            table.message   = "success";
            table.code      = 200;
            table.total     = model.Count;
            table.rows      = new Rows <List <ToDoModel> >();
            table.rows.item = new List <ToDoModel>();
            table.rows.item = model;
            return(JsonConvert.SerializeObject(table));
        }
Пример #19
0
        /// <summary>
        /// Finds the claim in the expired jwt, allowed types are Guid, AccountRole and string
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="jwt"></param>
        /// <param name="claim"></param>
        /// <returns>The requested claim in the specified extension</returns>
        public T GetClaim <T>(string jwt, JwtClaim claim)
        {
            if (jwt == null)
            {
                throw new UnprocessableException();
            }

            string       key      = Enum.GetName(typeof(JwtClaim), claim);
            var          handler  = new JsonWebTokenHandler();
            JsonWebToken jwtToken = handler.ReadJsonWebToken(jwt);

            string foundClaim = jwtToken.Claims?
                                .FirstOrDefault(c => c.Type.Equals(key, StringComparison.OrdinalIgnoreCase))?
                                .Value;

            if (string.IsNullOrEmpty(foundClaim))
            {
                return(default);
Пример #20
0
        public async Task <UserToken> Login(string username, string email, string password)
        {
            User    user    = new User();
            Account account = null;

            if (username != null)
            {
                user = await _accountsRepo.GetUserByUsername(username);

                account = await _accountsRepo.GetAccountById(user.Id);
            }

            if (email != null)
            {
                account = await _accountsRepo.GetAccountByEmail(email);
            }

            if (account == null)
            {
                string errorMessage = username == null ? WRONG_EMAIL_MESSAGE : WRONG_USERNAME_MESSAGE;
                throw new ApiException(ErrorCode.BadRequest, errorMessage);
            }

            bool verified = PasswordHasher.Verify(account.Password, password);

            if (!verified)
            {
                string errorMessage = username == null ? WRONG_EMAIL_MESSAGE : WRONG_USERNAME_MESSAGE;
                throw new ApiException(ErrorCode.BadRequest, errorMessage);
            }

            var jwtClaim = new JwtClaim()
            {
                UserId = user.Id, Username = user.Username
            };
            var tokenInfo = Authentication.GenerateToken(jwtClaim);

            return(new UserToken
            {
                User = user,
                TokenInfo = tokenInfo
            });
        }
Пример #21
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)

        {
            var isDefined = false;
            var controllerActionDescriptor = filterContext.ActionDescriptor as ControllerActionDescriptor;

            if (controllerActionDescriptor != null)
            {
                isDefined = controllerActionDescriptor.MethodInfo.GetCustomAttributes(inherit: true)
                            .Any(a => a.GetType().Equals(typeof(NoPermissionRequired)));
            }
            if (isDefined)
            {
                base.OnActionExecuting(filterContext);
            }
            //验签
            string token = filterContext.HttpContext.Request.Query["token"].ToString();

            if (string.IsNullOrEmpty(token))
            {
                filterContext.Result = new RedirectResult("/System/Login");
            }
            else
            {
                JwtUtils jwt   = new JwtUtils();
                JwtClaim claim = jwt.DecodingJwt(token);
                if (claim != null && DateTime.Now.ToBinary() <= claim.exp)
                {
                    if (claim.exp <= DateTime.Now.ToBinary())
                    {
                        //过期
                        filterContext.Result = new RedirectResult("/System/Login");
                    }
                    filterContext.HttpContext.Items.Add("user", claim);
                    base.OnActionExecuting(filterContext);
                }
                else
                {
                    filterContext.Result = new RedirectResult("/System/Login");
                }
            }
        }
Пример #22
0
        public IActionResult Index()
        {
            claim            = (JwtClaim)_accessor.HttpContext.Items["user"];
            ViewBag.username = claim.username;
            ViewBag.area     = claim.area;
            List <SelectListItem> items = new List <SelectListItem>();
            var rooms = ToDoService.getPriority(connstr);

            foreach (var item in rooms)
            {
                items.Add(new SelectListItem
                {
                    Text  = item.NAME,
                    Value = item.ID.ToString()
                });
            }
            items.FirstOrDefault().Selected = true;
            ViewBag.Items = items;
            return(View());
        }
Пример #23
0
 public ResponseResult <string> completeToDo([FromQuery] string token, string id)
 {
     claim = (JwtClaim)_accessor.HttpContext.Items["user"];
     try
     {
         var b = ToDoService.completeToDo(id, connstr);
         if (b)
         {
             return(ResponseResult <string> .Success("操作成功", "操作成功"));
         }
         else
         {
             return(ResponseResult <string> .Error("操作失败"));
         }
     }
     catch (Exception ex)
     {
         return(ResponseResult <string> .Error("系统异常"));
     }
 }
Пример #24
0
        public IActionResult Book()
        {
            claim            = (JwtClaim)_accessor.HttpContext.Items["user"];
            ViewBag.username = claim.username;
            ViewBag.area     = claim.area;
            //根据区域获取会议室信息
            List <SelectListItem> items = new List <SelectListItem>();
            var rooms = SystemService.GetRoomInfo(connstr).Where(r => r.AREA == claim.area);

            foreach (var item in rooms)
            {
                items.Add(new SelectListItem {
                    Text  = item.NAME,
                    Value = item.ID.ToString()
                });
            }
            items.FirstOrDefault().Selected = true;
            ViewBag.Items = items;
            return(View());
        }
Пример #25
0
        public async Task <UserToken> Register(RegistrationUser registrationUser)
        {
            User    user    = registrationUser.User;
            Account account = registrationUser.Account;

            bool usernameExists = await _accountsRepo.UsernameExistsAsync(user.Username);

            if (usernameExists)
            {
                throw new ApiException(ErrorCode.BadRequest, "Username exists");
            }

            bool emailExists = await _accountsRepo.EmailExistsAsync(account.Email);

            if (emailExists)
            {
                throw new ApiException(ErrorCode.BadRequest, "Email exists");
            }

            account.Password = PasswordHasher.Hash(account.Password);
            await _accountsRepo.CreateAccountAsync(account);

            user.Id = account.Id;
            await _accountsRepo.CreateUserAsync(user);

            var jwtClaim = new JwtClaim()
            {
                UserId = user.Id, Username = user.Username
            };
            var tokenInfo = Authentication.GenerateToken(jwtClaim);

            return(new UserToken
            {
                User = user,
                TokenInfo = tokenInfo
            });
        }
Пример #26
0
 public ResponseResult <string> delBook([FromQuery] string token, int id)
 {
     claim = (JwtClaim)_accessor.HttpContext.Items["user"];
     try
     {
         if (id == 0)
         {
             return(ResponseResult <string> .Error("参数异常"));
         }
         var b = SystemService.delBook(id, connstr);
         if (b)
         {
             return(ResponseResult <string> .Success("操作成功", "操作成功"));
         }
         else
         {
             return(ResponseResult <string> .Success("操作失败", "操作失败"));
         }
     }
     catch (Exception ex)
     {
         return(ResponseResult <string> .Error("系统异常"));
     }
 }
Пример #27
0
 public IActionResult editPwd()
 {
     claim = (JwtClaim)_accessor.HttpContext.Items["user"];
     return(View());
 }