parsav  Diff

Differences From Artifact [2ff93305a1]:

To Artifact [826b7b2edb]:


   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