Example #1
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext <KodkodDbContext>(options =>
                                                    options.UseSqlServer(_configuration.GetConnectionString("DefaultConnection"))
                                                    .UseLazyLoadingProxies());

            services.AddIdentity <User, Role>()
            .AddEntityFrameworkStores <KodkodDbContext>()
            .AddDefaultTokenProviders();

            services.Configure <JwtTokenConfiguration>(options =>
            {
                options.Issuer             = _configuration["Authentication:JwtBearer:Issuer"];
                options.Audience           = _configuration["Authentication:JwtBearer:Audience"];
                options.SigningCredentials = new SigningCredentials(_signingKey, SecurityAlgorithms.HmacSha256);
            });

            services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(jwtBearerOptions =>
            {
                jwtBearerOptions.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateActor            = true,
                    ValidateAudience         = true,
                    ValidateLifetime         = true,
                    ValidateIssuerSigningKey = true,
                    ValidIssuer      = _configuration["Authentication:JwtBearer:Issuer"],
                    ValidAudience    = _configuration["Authentication:JwtBearer:Audience"],
                    IssuerSigningKey = _signingKey
                };
            });

            services.AddAuthorization(options =>
            {
                foreach (var permission in PermissionsConsts.AllPermissions())
                {
                    options.AddPolicy(permission.Name,
                                      policy => policy.Requirements.Add(new PermissionRequirement(permission)));
                }
            });

            services.AddMvc(options => options.Filters.Add <KodkodDbContextActionFilter>());

            services.AddCors();

            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new Info {
                    Title = "Kodkod API", Version = "v1"
                });
            });

            services.AddKodkodEntityFramework();
            services.AddKodkodApplication();
            services.AddScoped <IAuthorizationHandler, PermissionHandler>();
            services.AddScoped <KodkodDbContextActionFilter>();
        }
Example #2
0
        public static RolePermission[] BuildRolePermissions()
        {
            var rolePermissions = PermissionsConsts.AllPermissions().Select(p =>
                                                                            new RolePermission
            {
                PermissionId = p.Id,
                RoleId       = AdminRole.Id
            }).ToList();

            var apiUserPermission = PermissionsConsts.AllPermissions()
                                    .FirstOrDefault(p => p.Name == PermissionsConsts.ApiUser);

            if (apiUserPermission != null)
            {
                rolePermissions.Add(new RolePermission
                {
                    PermissionId = apiUserPermission.Id,
                    RoleId       = MemberRole.Id
                });
            }

            return(rolePermissions.ToArray());
        }
Example #3
0
 public static Permission[] BuildPermissions()
 {
     return(PermissionsConsts.AllPermissions().ToArray());
 }