Ejemplo n.º 1
0
        public void OnAuthorization(AuthorizationFilterContext context)
        {
            AllowAnonymousAttribute allowAnonymous = (context.ActionDescriptor as ControllerActionDescriptor).MethodInfo.GetCustomAttribute(typeof(AllowAnonymousAttribute), false) as AllowAnonymousAttribute;

            if (allowAnonymous == null)
            {
                const string prefix = "Bearer ";

                bool result = context.HttpContext.Request.Headers.TryGetValue("Authorization", out StringValues authorization);

                ResponseResult responseResult = CommonFactory.CreateResponseResult;

                //如果不包含授权信息
                if (!result)
                {
                    context.Result = new JsonResult(responseResult.Failed("未授权的访问")); return;
                }

                string info = authorization.ToString().Trim();

                //空字符  不包含Bearer
                if (string.IsNullOrWhiteSpace(info) || !info.Contains(prefix))
                {
                    context.Result = new JsonResult(responseResult.Failed("未授权的访问")); return;
                }

                //token错误
                if (!_authService.ValidateToken(info.Substring(prefix.Length)))
                {
                    context.Result = new JsonResult(responseResult.Failed("未授权的访问")); return;
                }
            }
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> GetCompanyByIdAsync(string id)
        {
            if (string.IsNullOrEmpty(id))
            {
                return(BadRequest(ResponseResult.Failed(ErrorCode.ValidationError, "Company Id can't be empty.")));
            }

            var company = await _companyRepository.GetCompanyByIdAsync(id);

            if (company is null)
            {
                return(NotFound(ResponseResult.Failed(ErrorCode.Error, "Company isn't found.")));
            }

            var result = Mapper.Map <CompanyOutputModel>(company);

            if (company.ContactIds != null)
            {
                var contacts = await _contactRepository.GetContactsByListOfIdsAsync(company.ContactIds);

                result.Contacts = Mapper.Map <List <ContactOutputModel> >(contacts);
            }

            return(Ok(ResponseResult.SucceededWithData(result)));
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> ConfirmEmail(string userId, string code)
        {
            if (userId == null || code == null)
            {
                return(Json(ResponseResult.Failed("输入不正确!")));
            }
            var user = await _userManager.FindAsync(s => new IdentityUser {
                EmailConfirmed = s.EmailConfirmed, SecurityStamp = s.SecurityStamp, EditedTime = s.EditedTime, ConcurrencyStamp = s.ConcurrencyStamp, Email = s.Email, Id = s.Id
            }, p => p.Id.Equals(userId));

            if (user == null)
            {
                return(Json(ResponseResult.Failed("输入不正确!")));
            }
            IdentityResult confirm = new IdentityResult();

            if (!user.EmailConfirmed)
            {
                confirm = await _userManager.ConfirmEmailAsync(user, code);
            }
            if (confirm.Succeeded || user.EmailConfirmed)
            {
                await _signInManager.SignInAsync(user, isPersistent : false);

                return(Json(await tokenManager.SignInResultAsync(user)));
            }
            return(Json(ResponseResult.Failed("输入不正确!")));
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> RegisterAsync([RegularExpression(@"^[1]+[3,4,5,7,8]+\d{9}", ErrorMessage = "你输入的电话号码不正确")] string phone, string code, string xcode)
        {
            ResponseResult responseResult = VCheakCode(code);

            if (!responseResult.Succeeded)
            {
                return(Json(responseResult));
            }
            if (xcode.Equals(Session.GetGenerateRandomCode()))
            {
                IdentityUser user = new IdentityUser {
                    UserName = phone, PhoneNumber = phone, PhoneNumberConfirmed = true
                };
                var result = await _userManager.CreateAsync(user, "Qwe@#23");

                if (result.Succeeded)
                {
                    await _signInManager.SignInAsync(user, true);

                    return(Json(await tokenManager.SignInResultAsync(user)));
                }
                else
                {
                    return(Json(ResponseResult.Failed("注册失败,可能密码不符合要求", "注册失败,可能已经注册账号", "已注册,请直接登录")));
                }
            }
            return(Json(ResponseResult.Failed("注册失败,短信验证码不正确")));
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> GetIndividualDetailsByNationalId(string nationalId)
        {
            if (string.IsNullOrEmpty(nationalId))
            {
                return(BadRequest(ResponseResult.Failed(ErrorCode.ValidationError, "National Id can't be empty.")));
            }

            var individual = await _individualRepository.GetIndividualByNationalIdAsync(nationalId);

            if (individual is null)
            {
                return(NotFound(ResponseResult.Failed(ErrorCode.Error, "Individual isn't found.")));
            }

            var result = new IndividualDetailsOutputModel()
            {
                ContractInformation   = Mapper.Map <ContractOutputModel>(individual.Contract),
                IndividualInformation = Mapper.Map <IndividualOutputModel>(individual),
                SummaryInformation    = Mapper.Map <SummaryInformation>(individual.Contract.ContractData)
            };

            var subjectRole = await _subjectRoleRepository.GetSubjectRoleByCustomerAndContractCodeAsync(individual.CustomerCode,
                                                                                                        individual.Contract.ContractCode);

            result.ContractInformation.SubjectRole = subjectRole.RoleOfCustomer.ToString();
            return(Ok(ResponseResult.SucceededWithData(result)));
        }
Ejemplo n.º 6
0
        public async Task <IActionResult> AddContactyAsync(ContactInputModel model)
        {
            if (string.IsNullOrEmpty(model.CompanyId))
            {
                return(BadRequest(ResponseResult.Failed(ErrorCode.ValidationError, "Company id can't be empty.")));
            }

            if (string.IsNullOrEmpty(model.Name))
            {
                return(BadRequest(ResponseResult.Failed(ErrorCode.ValidationError, "Contact name can't be empty.")));
            }

            var company = await _companyRepository.GetCompanyByIdAsync(model.CompanyId);

            if (company is null)
            {
                return(NotFound(ResponseResult.Failed(ErrorCode.Error, "Company not found")));
            }

            var contact = Contact.New(model.Name, company.Id);
            await _contactRepository.AddContactAsync(contact);

            company.AddContact(contact.Id);
            await _companyRepository.UpdateCompanyAsync(company);

            var result = Mapper.Map <ContactOutputModel>(contact);

            return(Ok(ResponseResult.SucceededWithData(result)));
        }
Ejemplo n.º 7
0
        public async Task <IActionResult> Register([FromBody] RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                string         callbackUrl    = string.Empty;
                ResponseResult responseResult = VCheakCode(model.Code);
                if (!responseResult.Succeeded)
                {
                    return(Json(responseResult));
                }
                IdentityUser user = model.ByPhone ? new IdentityUser {
                    UserName = model.Phone
                } : new IdentityUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    Logger.LogInformation(3, "注册了一个新的用户.");
                    if (!model.ByPhone)
                    {
                        var codeEmail = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                        callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = codeEmail }, protocol: HttpContext.Request.Scheme);
                        await _emailSender.SendEmailAsync(model.Email, user.UserName + ":请完成注册验证",
                                                          $"请点击该链接完成账号注册: <a href='{callbackUrl}'>点我完成注册!</a>有效时间为:10分钟,请你尽快填写。");
                    }
                    else
                    {
                        if (!model.XCode.Equals(Session.GetGenerateRandomCode()))
                        {
                            return(Json(ResponseResult.Failed("注册失败,短信验证码不正确")));
                        }
                        else
                        {
                            var p = await _userManager.UpdateConfirmPhone(user);

                            if (!p.Succeeded)
                            {
                                return(Json(p));
                            }
                            else
                            {
                                await _signInManager.SignInAsync(user, true);

                                return(Json(await tokenManager.SignInResultAsync(user)));
                            }
                        }
                    }
                }
                return(Json(result));
            }
            return(Failed());
        }
Ejemplo n.º 8
0
        public IActionResult DeleteMenu(int?id)
        {
            ResponseResult responseResult = CommonFactory.CreateResponseResult;

            //if (_menuService.DeleteMenu(id))
            //{
            //    return Ok(responseResult.Success("菜单删除成功"));
            //}

            return(Ok(responseResult.Failed("菜单删除失败")));
        }
Ejemplo n.º 9
0
        public IActionResult UpdateMenu(MenuModel menuModel)
        {
            ResponseResult responseResult = CommonFactory.CreateResponseResult;

            //if (_menuService.UpdateMenu(menuModel))
            //{
            //    return Ok(responseResult.Success("菜单修改成功"));
            //}

            return(Ok(responseResult.Failed("菜单修改失败")));
        }
Ejemplo n.º 10
0
        public IActionResult AddEenu(MenuModel menuModel)
        {
            ResponseResult responseResult = CommonFactory.CreateResponseResult;

            if (_menuService.AddMenu(menuModel))
            {
                return(Ok(responseResult.Success("菜单添加成功")));
            }

            return(Ok(responseResult.Failed("菜单添加失败")));
        }
Ejemplo n.º 11
0
        public override void OnException(ExceptionContext context)
        {
            ColorizeException("Exception:");

            var result = new ObjectResult(ResponseResult.Failed())
            {
                StatusCode = (int)HttpStatusCode.InternalServerError
            };

            context.Result = result;
        }
Ejemplo n.º 12
0
        public async Task <IActionResult> GetAllFriendshipsByDatasetIdAsync(long id)
        {
            var dataset = await _datasetRepository.GetDatasetByIdAsync(id);

            if (dataset == null)
            {
                return(NotFound(ResponseResult.Failed(ErrorCode.Error, "Dataset isn't found.")));
            }

            var friendships = await _friendShipRepository.GetAllFriendshipsByDatasetIdAsync(id);

            var result = Mapper.Map <List <FriendshipOutputModel> >(friendships);

            return(Ok(ResponseResult.SucceededWithData(result)));
        }
Ejemplo n.º 13
0
        public async Task <IActionResult> AddCompanyAsync(CompanyInputModel model)
        {
            if (string.IsNullOrEmpty(model.Name))
            {
                return(BadRequest(ResponseResult.Failed(ErrorCode.ValidationError, "Company name can't be empty.")));
            }

            var company = Company.New(model.Name, model.NumOfEmpolyees);

            await _companyRepository.AddCompanyAsync(company);

            var result = Mapper.Map <CompanyOutputModel>(company);

            return(Ok(ResponseResult.SucceededWithData(result)));
        }
Ejemplo n.º 14
0
        public async Task <IActionResult> CreateDatasetAsync(DatasetInputModel model)
        {
            if (string.IsNullOrEmpty(model.Name))
            {
                return(BadRequest(ResponseResult.Failed(ErrorCode.ValidationError, "Dataset name can't be empty.")));
            }

            var dataset = Dataset.New(model.Name);

            await _datasetRepository.AddDatasetAsync(dataset);

            var result = Mapper.Map <DatasetOutputModel>(dataset);

            return(Ok(ResponseResult.SucceededWithData(result)));
        }
Ejemplo n.º 15
0
        //[ServiceFilter(typeof(ValidateTokenAttribute))]
        public IActionResult GetAuth([FromBody] LoginRequestModel loginRequest)
        {
            loginRequest.Username = loginRequest.Username.Trim();
            loginRequest.Password = MD5Encrypting.MD5Encrypt64(MD5Encrypting.MD5Encrypt16(loginRequest.Password.Trim()));//两次加密安全性更高

            ResponseResult responseResult = CommonFactory.CreateResponseResult;

            UserModel user = _userService.GetUser(loginRequest);

            if (user == null || user.IsDelete == DataStatusEnum.Delete)
            {
                return(Ok(responseResult.Failed("用户名或者密码错误")));
            }
            if (user.AccountStatus == AccountStatusEnum.PendingReview)
            {
                return(Ok(responseResult.Failed("账号待审核通过中")));
            }
            if (user.AccountStatus == AccountStatusEnum.Locked)
            {
                return(Ok(responseResult.Failed("账号已被锁定")));
            }
            if (user.AccountStatus == AccountStatusEnum.Forbidden)
            {
                return(Ok(responseResult.Failed("账号已被禁用")));
            }

            string token = _authService.CreateToken(new AuthContext()
            {
                ID       = user.ID,
                Username = user.Username,
                Email    = user.Email,
                Role     = "testRole",
            });

            return(Ok(responseResult.ResponseData(token)));
        }
Ejemplo n.º 16
0
        public async Task <ResponseResult <ProductEntityDomain> > InvokeAsync(ProductEntityDomain productEntityDomain)
        {
            if (!productEntityDomain.Validate())
            {
                return(ResponseResult <ProductEntityDomain> .Failed(400, "Existem campos inválidos", productEntityDomain.Notifications));
            }

            productEntityDomain.Id        = Guid.NewGuid().ToString();
            productEntityDomain.Active    = 1;
            productEntityDomain.CreatedAt = DateTime.Now;

            ProductEntityDomain resultData = await _productRepository.CreateProductAsync(productEntityDomain);

            return(ResponseResult <ProductEntityDomain> .Succeeded(resultData, 201));
        }
Ejemplo n.º 17
0
        public async Task <IActionResult> SearchIndividualByNationalId(string nationalId)
        {
            if (string.IsNullOrEmpty(nationalId))
            {
                return(BadRequest(ResponseResult.Failed(ErrorCode.ValidationError, "National Id can't be empty.")));
            }

            var individual = await _individualRepository.GetIndividualByNationalIdAsync(nationalId);

            if (individual is null)
            {
                return(NotFound(ResponseResult.Failed(ErrorCode.Error, "no hit information")));
            }

            return(Ok(ResponseResult.SucceededWithData("One Single hit")));
        }
        public void OnActionExecuting(ActionExecutingContext context)
        {
            //POST PUT 方法进行模型校验
            string method = context.HttpContext.Request.Method;

            if ((method == "POST" || method == "PUT") && !context.ModelState.IsValid)
            {
                string message = context.ModelState.ToErrorMessage();
                if (message != string.Empty)
                {
                    ResponseResult responseResult = CommonFactory.CreateResponseResult;
                    context.Result = new JsonResult(responseResult.Failed(message));
                    return;
                }
            }
        }
Ejemplo n.º 19
0
        public async Task <IActionResult> GetContactByIdAsync(string id)
        {
            if (string.IsNullOrEmpty(id))
            {
                return(BadRequest(ResponseResult.Failed(ErrorCode.ValidationError, "Contact Id can't be empty.")));
            }

            var contact = await _contactRepository.GetContactByIdAsync(id);

            if (contact is null)
            {
                return(NotFound(ResponseResult.Failed(ErrorCode.Error, "no hit information")));
            }

            var result = Mapper.Map <ContactOutputModel>(contact);

            return(Ok(ResponseResult.SucceededWithData(result)));
        }
Ejemplo n.º 20
0
        public override async Task OnExceptionAsync(ExceptionContext context)
        {
            if (context is null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            ColorizeException("Exception:");

            Console.Write($" {context.Exception}");
            Console.WriteLine();

            var result = new ObjectResult(ResponseResult.Failed())
            {
                StatusCode = (int)HttpStatusCode.InternalServerError
            };

            context.Result = result;
        }
Ejemplo n.º 21
0
        public async Task <IActionResult> AddContactToCompanyAsync(string id, AddContactCompanyInputModel model)
        {
            if (string.IsNullOrEmpty(id))
            {
                return(BadRequest(ResponseResult.Failed(ErrorCode.ValidationError, "Company Id can't be empty.")));
            }

            var company = await _companyRepository.GetCompanyByIdAsync(id);

            if (company is null)
            {
                return(NotFound(ResponseResult.Failed(ErrorCode.Error, "Company isn't found.")));
            }

            if (string.IsNullOrEmpty(model.ContactId))
            {
                return(BadRequest(ResponseResult.Failed(ErrorCode.ValidationError, "Contact Id can't be empty.")));
            }

            var contact = await _contactRepository.GetContactByIdAsync(model.ContactId);

            if (contact is null)
            {
                return(NotFound(ResponseResult.Failed(ErrorCode.Error, "Contact isn't found.")));
            }

            var isExist = company.ContactIds != null?company.ContactIds.FirstOrDefault(x => x == model.ContactId) : null;

            if (isExist != null)
            {
                return(BadRequest(ResponseResult.Failed(ErrorCode.Error, "Contact is already exist.")));
            }

            company.AddContact(model.ContactId);
            contact.AddCompany(company.Id);

            await _companyRepository.UpdateCompanyAsync(company);

            await _contactRepository.UpdateContactAsync(contact);

            return(Ok(ResponseResult.Succeeded()));
        }
Ejemplo n.º 22
0
        public async Task <IActionResult> GetAllUsersByDatasetIdAsync(long id)
        {
            var dataset = await _datasetRepository.GetDatasetByIdAsync(id);

            if (dataset == null)
            {
                return(NotFound(ResponseResult.Failed(ErrorCode.Error, "Dataset isn't found.")));
            }


            var users = await _friendShipRepository.GetAllUniqueUsersWithFriendsCountByDatasetIdAsync(id);

            var result = new DatasetUsersOutputModel
            {
                Dataset = Mapper.Map <DatasetOutputModel>(dataset),
                Users   = Mapper.Map <List <UserOutputModel> >(users)
            };

            return(Ok(ResponseResult.SucceededWithData(result)));
        }
Ejemplo n.º 23
0
        public async Task <IActionResult> DeleteContactByIdAsync(string id)
        {
            if (string.IsNullOrEmpty(id))
            {
                return(BadRequest(ResponseResult.Failed(ErrorCode.ValidationError, "Contact Id can't be empty.")));
            }

            var contact = await _contactRepository.GetContactByIdAsync(id);

            if (contact is null)
            {
                return(NotFound(ResponseResult.Failed(ErrorCode.Error, "no hit information")));
            }

            contact.Delete();

            await _contactRepository.DeleteContactAsync(contact);

            return(Ok(ResponseResult.Succeeded()));
        }
Ejemplo n.º 24
0
        public async Task <IActionResult> DeleteCompanyByIdAsync(string id)
        {
            if (string.IsNullOrEmpty(id))
            {
                return(BadRequest(ResponseResult.Failed(ErrorCode.ValidationError, "Company Id can't be empty.")));
            }

            var company = await _companyRepository.GetCompanyByIdAsync(id);

            if (company is null)
            {
                return(NotFound(ResponseResult.Failed(ErrorCode.Error, "Company isn't found.")));
            }

            company.Delete();

            await _companyRepository.DeleteCompanyAsync(company);

            return(Ok(ResponseResult.Succeeded()));
        }
Ejemplo n.º 25
0
 protected ResponseResult VCheakCode(string code)
 {
     if (code.IsNullOrEmpty())
     {
         return(ResponseResult.Failed("图形验证码不能为空 "));
     }
     if (Session == null)
     {
         return(ResponseResult.Failed("请刷新浏览器 "));
     }
     if (CheakCode == null)
     {
         return(ResponseResult.Failed("图形验证码不正确"));
     }
     if (!CheakCode.Equals(code))
     {
         return(ResponseResult.Failed("图形验证码不正确"));
     }
     Session.SetString(nameof(CheakCode), string.Empty);
     return(ResponseResult.Success());
 }
Ejemplo n.º 26
0
        public ResponseResult InitialSetup()
        {
            var response = CallApiInitialSetup();

            if (response == null)
            {
                return(ResponseResult.Failed("Calling API is failed."));
            }

            if (this.InsertMstItemToDB(response.MasterItems))
            {
                return(ResponseResult.Failed("Insert MstItem to DB is failed."));
            }

            if (this.InsertAppSettingToDB(response.AppSettingInfos))
            {
                return(ResponseResult.Failed("Insert AppSetting to DB is failed."));
            }

            return(ResponseResult.Succeed());
        }
Ejemplo n.º 27
0
        public async Task <IActionResult> UploadDataByDatasetIdAsync(long id, IFormFile file)
        {
            if (file == null)
            {
                return(BadRequest(ResponseResult.Failed(ErrorCode.ValidationError, "File can't be empty.")));
            }

            var dataset = await _datasetRepository.GetDatasetByIdAsync(id);

            if (dataset == null)
            {
                return(NotFound(ResponseResult.Failed(ErrorCode.Error, "Dataset isn't found.")));
            }

            if (dataset.IsImported)
            {
                return(BadRequest(ResponseResult.Failed(ErrorCode.Error, "Dataset can't be imported more than once.")));
            }

            var friendships = new List <Friendship>();

            using (StreamReader streamReader = new StreamReader(file.OpenReadStream()))
            {
                string line;
                while ((line = streamReader.ReadLine()) != null)
                {
                    var fields = line.Split(' ');
                    friendships.Add(Friendship.New(long.Parse(fields[0]), long.Parse(fields[1]), dataset));
                }
            }

            await _friendShipRepository.AddDataAsync(friendships);

            dataset.Update();

            await _datasetRepository.UpdateDatasetAsync(dataset);

            return(Ok(ResponseResult.Succeeded()));
        }
Ejemplo n.º 28
0
        public async Task <IActionResult> DeleteDatasetByIdAsync(long id)
        {
            var dataset = await _datasetRepository.GetDatasetByIdAsync(id);

            if (dataset == null)
            {
                return(NotFound(ResponseResult.Failed(ErrorCode.Error, "Dataset isn't found.")));
            }

            var friendships = await _friendShipRepository.GetAllFriendshipsByDatasetIdAsync(id);

            foreach (var fs in friendships)
            {
                fs.Delete();
            }

            dataset.Delete();

            await _datasetRepository.UpdateDatasetAsync(dataset);

            await _friendShipRepository.UpdateListOfFriendshipsAsync(friendships);

            return(Ok());
        }
        public void OnActionExecuting(ActionExecutingContext context)
        {
            //POST PUT 方法进行模型校验
            string method = context.HttpContext.Request.Method;

            if ((method == "POST" || method == "PUT") && !context.ModelState.IsValid)
            {
                //BindAttribute特性对JSON数据无效
                IList <ParameterDescriptor> parameterDescriptors = context.ActionDescriptor.Parameters;
                //获取BindAttribute
                ParameterDescriptor parameterDescriptor = parameterDescriptors.Where(item => item.BindingInfo.PropertyFilterProvider is BindAttribute).SingleOrDefault();

                BindAttribute bindAttribute = parameterDescriptor.BindingInfo.PropertyFilterProvider as BindAttribute;

                string message = context.ModelState.ToErrorMessageByBindAttribute(bindAttribute);

                if (message != string.Empty)
                {
                    ResponseResult responseResult = CommonFactory.CreateResponseResult;
                    context.Result = new JsonResult(responseResult.Failed(message));
                    return;
                }
            }
        }