Differences From
Artifact [2ff93305a1]:
818 818 cs = cs + set
819 819 ok = iok
820 820 end
821 821 end
822 822 return cs, ok
823 823 end
824 824
825 -terra srv:actor_auth_pw(ip: lib.store.inet, user: pstring, pw: pstring): uint64
826 - for i=0,self.sources.ct do
827 - if self.sources(i).backend ~= nil and
828 - self.sources(i).backend.actor_auth_pw ~= nil then
829 - var aid,uid,newhnd = self.sources(i):actor_auth_pw(ip,user,pw)
830 - if aid ~= 0 then
831 - if uid == 0 then
832 - lib.dbg('new user just logged in, creating account entry')
833 - var kbuf: uint8[lib.crypt.const.maxdersz]
834 - var na = lib.store.actor.mk(&kbuf[0])
835 - na.handle = newhnd.ptr
836 - var newuid: uint64
837 - if self.sources(i).backend.actor_create ~= nil then
838 - newuid = self.sources(i):actor_create(&na)
839 - else newuid = self:actor_create(&na) end
825 +local function mk_auth_fn(suffix,...)
826 + local syms = {...}
827 + local name = 'actor_auth_' .. suffix
828 + srv.methods[name] = terra(self: &srv, ip: lib.store.inet, user: pstring, [syms]): uint64
829 + for i=0,self.sources.ct do
830 + if self.sources(i).backend ~= nil and
831 + self.sources(i).backend.[name] ~= nil then
832 + var aid,uid,newhnd = self.sources(i):[name](ip,user, [syms])
833 + if aid ~= 0 then
834 + if uid == 0 then
835 + lib.dbg('new user just logged in, creating account entry')
836 + var kbuf: uint8[lib.crypt.const.maxdersz]
837 + var na = lib.store.actor.mk(&kbuf[0])
838 + na.handle = newhnd.ptr
839 + var newuid: uint64
840 + if self.sources(i).backend.actor_create ~= nil then
841 + newuid = self.sources(i):actor_create(&na)
842 + else newuid = self:actor_create(&na) end
840 843
841 - if self.sources(i).backend.actor_auth_register_uid ~= nil then
842 - self.sources(i):actor_auth_register_uid(aid,newuid)
844 + if self.sources(i).backend.actor_auth_register_uid ~= nil then
845 + self.sources(i):actor_auth_register_uid(aid,newuid)
846 + end
843 847 end
848 + return aid
844 849 end
845 - return aid
846 850 end
847 851 end
852 +
853 + return 0
848 854 end
849 -
850 - return 0
855 + srv.methods[name].name = name
851 856 end
857 +
858 +mk_auth_fn('pw', symbol(pstring))
859 +mk_auth_fn('challenge', symbol(lib.mem.ptr(uint8)), symbol(pstring))
860 +
861 +--terra srv:actor_auth_pw(ip: lib.store.inet, user: pstring, pw: pstring): uint64
862 +-- for i=0,self.sources.ct do
863 +-- if self.sources(i).backend ~= nil and
864 +-- self.sources(i).backend.actor_auth_pw ~= nil then
865 +-- var aid,uid,newhnd = self.sources(i):actor_auth_pw(ip,user,pw)
866 +-- if aid ~= 0 then
867 +-- if uid == 0 then
868 +-- lib.dbg('new user just logged in, creating account entry')
869 +-- var kbuf: uint8[lib.crypt.const.maxdersz]
870 +-- var na = lib.store.actor.mk(&kbuf[0])
871 +-- na.handle = newhnd.ptr
872 +-- var newuid: uint64
873 +-- if self.sources(i).backend.actor_create ~= nil then
874 +-- newuid = self.sources(i):actor_create(&na)
875 +-- else newuid = self:actor_create(&na) end
876 +--
877 +-- if self.sources(i).backend.actor_auth_register_uid ~= nil then
878 +-- self.sources(i):actor_auth_register_uid(aid,newuid)
879 +-- end
880 +-- end
881 +-- return aid
882 +-- end
883 +-- end
884 +-- end
885 +--
886 +-- return 0
887 +--end
852 888
853 889 terra cfgcache.methods.load :: {&cfgcache} -> {}
854 890 terra cfgcache:init(o: &srv)
855 891 self.overlord = o
856 892 self:load()
857 893 end
858 894