1- local lrucache = require (" apisix.core.lrucache" )
2- local schema = require (" apisix.core.schema" )
3- local config = require (" apisix.core.config_etcd" )
4- local insert_tab = table.insert
1+ local core = require (" apisix.core" )
2+ local plugin = require (" apisix.plugin" )
3+ local error = error
4+ local ipairs = ipairs
5+ local pairs = pairs
56local consumers
6- local error = error
7- local ipairs = ipairs
8- local pairs = pairs
97
108
119local _M = {
12- version = 0.1 ,
10+ version = 0.2 ,
1311}
1412
15- --[[
16- {
17- "id": "ShunFeng",
18- "plugins": {
19- "key-auth": {
20- "key": "dddxxyyy"
21- }
22- }
23- }
2413
25- to
26-
27- {
28- key-auth: [
29- {
30- "key": "dddxxyyy",
31- "consumer_id": "ShunFeng"
32- }
33- ]
34- }
35- ]]
3614local function plugin_consumer ()
3715 local plugins = {}
3816
@@ -41,17 +19,23 @@ local function plugin_consumer()
4119 end
4220
4321 for _ , consumer in ipairs (consumers .values ) do
44- for name , conf in pairs (consumer .value .plugins ) do
45- if not plugins [name ] then
22+ for name , config in pairs (consumer .value .plugins or {}) do
23+ local plugin_obj = plugin .get (name )
24+ if plugin_obj and plugin_obj .type == " auth"
25+ and not plugins [name ] then
4626 plugins [name ] = {
4727 nodes = {},
48- conf_version = consumers .conf_version ,
28+ conf_version = consumers .conf_version
4929 }
50- end
5130
31+ local new_consumer = core .table .clone (consumer .value )
32+ new_consumer .consumer_id = new_consumer .id
33+ new_consumer .auth_conf = config
34+ core .log .info (" consumer:" , core .json .delay_encode (new_consumer ))
35+ core .table .insert (plugins [name ].nodes , new_consumer )
5236
53- insert_tab ( plugins [ name ]. nodes ,
54- { consumer_id = consumer . value . id , conf = conf })
37+ break
38+ end
5539 end
5640 end
5741
6044
6145
6246function _M .plugin (plugin_name )
63- local plugin_conf = lrucache .global (" /consumers" ,
64- consumers .conf_version , plugin_consumer )
47+ local plugin_conf = core . lrucache .global (" /consumers" ,
48+ consumers .conf_version , plugin_consumer )
6549 return plugin_conf [plugin_name ]
6650end
6751
6852
6953function _M .init_worker ()
7054 local err
71- consumers , err = config .new (" /consumers" ,
72- {
73- automatic = true ,
74- item_schema = schema .consumer
75- })
55+ consumers , err = core .config .new (" /consumers" , {
56+ automatic = true ,
57+ item_schema = core .schema .consumer
58+ })
7659 if not consumers then
7760 error (" failed to create etcd instance for fetching consumers: " .. err )
7861 return
0 commit comments