Exemplo n.º 1
0
        protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, AuthorizationRequirement requirement)
        {
            try
            {
                var secretKey = requirement.AppSetting.GetValue <string>("SecretKey", string.Empty);
                if (!string.IsNullOrEmpty(secretKey))
                {
                    var ctx       = context.Resource as AuthorizationFilterContext;
                    var reqHeader = RequestUtil.GetRequestHeader(ctx.HttpContext.Request);
                    var tokenData = Crypto.Decrypt <UserAccessTokenViewModel>(reqHeader.AccessToken, secretKey);
                    if (tokenData != null)
                    {
                        var utcTime = DateTime.UtcNow;
                        if (utcTime < tokenData.ExpiredTime.ToDateTime())
                        {
                            var unitOfWork = ctx.HttpContext.RequestServices.GetService(typeof(IUnitOfWork)) as IUnitOfWork;
                            using (var uow = unitOfWork.Initialize())
                            {
                                var sUser = uow.UserRepository.Find(reqHeader, new UserModel {
                                    Email = tokenData.Username
                                });
                                if (sUser != null && !string.IsNullOrEmpty(sUser.Email) && !string.IsNullOrEmpty(sUser.Password))
                                {
                                    if (sUser.Password.Equals(tokenData.Password))
                                    {
                                        if (sUser.Active ?? false)
                                        {
                                            if (!(sUser.Locked ?? false))
                                            {
                                                ctx.HttpContext.Request.Headers.Add("user_id", new Microsoft.Extensions.Primitives.StringValues(sUser.UserId + string.Empty));
                                                ctx.HttpContext.Request.Headers.Add("user_type_id", new Microsoft.Extensions.Primitives.StringValues((int)sUser.UserType + string.Empty));
                                                ctx.HttpContext.Request.Headers.Add("user_password", new Microsoft.Extensions.Primitives.StringValues(sUser.Password));

                                                context.Succeed(requirement);
                                                return(Task.CompletedTask);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                context.Fail();
            }
            catch (Exception ex)
            {
                context.Fail();
            }

            return(Task.CompletedTask);
        }
Exemplo n.º 2
0
        public ResponseModel <UserModel> UserSignup([FromBody] UserModel user)
        {
            user.IsNull();
            user.Validate(true);

            var reqHeader = RequestUtil.GetRequestHeader(Request);
            var password  = user.Password;

            using (var uow = UnitOfWork.Initialize())
            {
                IsNullUOW(uow);
                string message = uow.UserRepository.Add(reqHeader, user);
                if (string.IsNullOrEmpty(message))
                {
                    uow.Commit();
                }

                return(CreateResponse(message, user));
            }
        }