As for the spending controls... how do you enforce this? What is stopping the person with "spend" permission exporting the private key(s), importing to another wallet and spending whatever they like?
Essentially, you encrypt it.
But it has to be decrypted when spending. So if the wallet actually does hold the private key (which it should, because if not it is not a proper wallet) it can be reverse engineered or debugged to extract the private key.
This would eliminate your 'encryption'.
IF the private key is known to the wallet, each user can extract it => 'Permissions' to spend are useless, since one user can steal
all funds.
If the private key is NOT known to the wallet, it basically is a (weaker form of an) online wallet where the server does handle payment requests (and also holds the private key) => Unsecure.
For me, it seems this system is flawed and does not work. Did i miss something ? Does your software/concept work differently ? Might explain it more detailed ?