using IdentityServer4.Models;
using IdentityServer4.Test;

namespace Identity.Host
{
    public static class InMemoryConfig
    {
        // 这个 Authorization Server 保护了哪些 API （资源）
        public static IEnumerable<ApiResource> GetApiResources()
        {
            return new[]
            {
                new ApiResource("hotline_api", "Hotline API"),
                new ApiResource("filestorage_api", "FileStorage API"),
            };
        }
        // 哪些客户端 Client（应用） 可以使用这个 Authorization Server
        public static IEnumerable<Client> GetClients()
        {
            return new[]
            {
                new Client
                {
                    ClientId = "hotline_admin",//定义客户端 Id
                    ClientSecrets = new [] { new Secret("08db1ed6-06bf-47c0-87a5-65cca85f55a4".Sha256()) },//Client用来获取token
                    AllowedGrantTypes = GrantTypes.ResourceOwnerPasswordAndClientCredentials,//这里使用的是通过用户名密码和ClientCredentials来换取token的方式. ClientCredentials允许Client只使用ClientSecrets来获取token. 这比较适合那种没有用户参与的api动作
                    AllowedScopes = new [] { "hotline_api", "filestorage_api" }// 允许访问的 API 资源
                },
                new Client
                {
                    ClientId = "hotline_api",
                    ClientSecrets = new [] { new Secret("08db29cc-0da0-4adf-850c-1b2689bd535d".Sha256()) },
                    AllowedGrantTypes = GrantTypes.ClientCredentials,
                    AllowedScopes = new [] { "filestorage_api" }
                }
            };
        }
        // 指定可以使用 Authorization Server 授权的 Users（用户）
        public static IEnumerable<TestUser> Users()
        {
            return new[]
            {
                new TestUser
                {
                    SubjectId = "1",
                    Username = "sysadmin",
                    Password = "Fwkj@789"
                }
            };
        }

        public static IEnumerable<ApiScope> ApiScopes =>
            new ApiScope[]
            {
                new ApiScope("hotline_api"),
                new ApiScope("filestorage_api")
            };
    }
}
