예제 #1
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            var configBuilder = new ConfigurationBuilder()
                                .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
                                .AddEnvironmentVariables()
                                .Build();

            services.AddCors();

            services.AddControllers();

            services.AddDbContext <ThermoDataContext>(opt => opt.UseSqlServer(Configuration.GetConnectionString(ThermoDatabaseContext)));

            // configure strongly typed settings objects
            var appSettingsSection = Configuration.GetSection(AppSettingConfigurationName);

            services.Configure <AppSettings>(appSettingsSection);

            // configure jwt authentication
            var appSettings = appSettingsSection.Get <AppSettings>();
            var key         = Encoding.ASCII.GetBytes(appSettings.Secret);

            services.AddAuthentication(auth =>
            {
                auth.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                auth.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(jwtOptions =>
            {
                jwtOptions.Events = new JwtBearerEvents
                {
                    OnTokenValidated = context =>
                    {
                        var userIdentity = context.Principal.Identity.Name;
                        var exp          = ClaimUtil.GetExpiryClaimExpiryDate(context.Principal.Claims.Where(x => x.Type == ExpiryClaimDefinition).FirstOrDefault().Value);

                        var connectionString = Configuration.GetConnectionString(ThermoDatabaseContext);

                        var isUserValid = IsUserAuthorized(userIdentity, connectionString, exp);

                        if (!isUserValid)
                        {
                            context.Fail(UnAuthorizedTokenValidation);
                        }

                        return(Task.CompletedTask);
                    }
                };
                jwtOptions.RequireHttpsMetadata      = false;
                jwtOptions.SaveToken                 = true;
                jwtOptions.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey         = new SymmetricSecurityKey(key),
                    ValidateIssuer           = false,
                    ValidateAudience         = false
                };
            });
        }
        private async Task InitUserProfile()
        {
            var thumbnail = await ClaimUtil.GetThumbnailString();

            if (thumbnail.IndexOf("~/") >= 0)
            {
                thumbnail = Url.Content(thumbnail);//default image
            }
            ViewBag.Thumbnail = thumbnail;
        }
        public async Task <ActionResult> Detail(string id)
        {
            ViewBag.Message = "This is Claim Detail";
            await InitUserProfile();

            ViewBag.Claim = ClaimUtil.GetMockClaimViewModel();
            InitMockClaimList();
            //ViewBag.ClaimImage = await ClaimUtil.GetMockImageFromBlob();
            return(View());
        }
        public async Task <ActionResult> Approve(int id, bool approved)
        {
            var url = Constants.ClaimApproverUrl;
            var tag = await ClaimUtil.GetMockCutomerEmail();

            var postJson = approved ? new {
                message = "The claim has been approved",
                tag     = tag
            } :new{
                message = "The claim has been declined",
                tag     = tag
            };
            var response = await PostTo(url, postJson);

            return(Json(response));
        }
예제 #5
0
        // GET: Create Claim
        public async Task <ActionResult> AddClaim()
        {
            var customer = await ClaimUtil.GetCustomerMock();

            ViewBag.MockInfo = new AddClaimViewModel
            {
                CustomerId          = customer.Id,
                CustomerVehicleId   = customer.Vehicles.First().Id,
                UserPhotoPath       = AppSettings.CustomerMock.UserPhotoPath,
                DriverLicensePath   = AppSettings.CustomerMock.DriverLicensePath,
                LicensePlatePath    = AppSettings.CustomerMock.LicensePlatePath,
                PolicyIDPath        = AppSettings.CustomerMock.PolicyIDPath,
                CrashImagesPaths    = AppSettings.CustomerMock.CrashImagesPaths,
                SelectedVehiclePath = AppSettings.CustomerMock.SelectedVehiclePath
            };
            return(View());
        }
예제 #6
0
        public async Task <ActionResult> Approve(int id, bool approved, string damageAssessment, string cid)
        {
            var queryable = dbContext.Claims.Include(i => i.Vehicle.Customer)
                            .Where(i => i.Id == id);
            var claim = await queryable.FirstOrDefaultAsync();

            var customer = claim.Vehicle.Customer;
            var url      = Common.AppSettings.ClaimManualApproverUrl;
            var response = await PostTo(url, new {
                id               = id,
                correlationId    = claim.CorrelationId,
                damageAssessment = ClaimUtil.ParseDamageAssessmentToInt(damageAssessment),
                approved         = approved,
                customerUserId   = Regex.Match(customer.UserId, @"sid:\w+").Value,
                customerName     = customer.FirstName + " " + customer.LastName,
                customerEmail    = customer.Email
            });

            return(Json(response));
        }
예제 #7
0
        public async Task <ActionResult> AddClaim(string phonenumber, string description)
        {
            var newGuid          = Guid.NewGuid();
            var otherPartyImages = ClaimUtil.GetOtherPartyImages();
            var claimImages      = ClaimUtil.GetClaimImages(newGuid);
            var customer         = await ClaimUtil.GetCustomerMock();

            var vehicle    = customer.Vehicles.First();
            var postImages = new
            {
                otherPartyImages = otherPartyImages.Select(otherImg => new { plateJson = otherImg.Item1, kind = otherImg.Item2 }).ToArray(),
                claimImages      = claimImages.Select(claimImg => new { plateJson = claimImg.Item1, imgName = claimImg.Item2 }).ToArray(),
            };
            var response = await PostTo(AppSettings.CreateMobileClaimFromWebUrl, new {
                claimId     = newGuid.ToString(),
                description = description ?? string.Empty,
                phonenumber = phonenumber ?? string.Empty,
                userId      = customer.UserId,
                vehicleId   = vehicle.Id,
                postImages  = postImages
            });

            return(Json(new { success = true }));
        }
 private void InitMockBuilderList()
 {
     ViewBag.BuilderList = ClaimUtil.GetMockBuilderViewModelList();
 }
 private void InitMockClaimList()
 {
     ViewBag.ClaimHistoryList = ClaimUtil.GetMockClaimViewModelList();
 }
예제 #10
0
 public ActionResult <int> GetSelfAge()
 {
     return(ClaimUtil.UserAge(HttpContext));
 }