Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add auth interface #952

Merged
merged 18 commits into from
Jun 23, 2023
Merged

Add auth interface #952

merged 18 commits into from
Jun 23, 2023

Conversation

leighmcculloch
Copy link
Member

What

Add auth interface.

Why

So that contracts who wish to implement the __check_auth function to provide custom auth can do so by implementing a trait, which is more convenient than copy-pasting a specific function.

The reason we left this out previously was because it is not convenient for developers to implement multiple traits. However, there is a work around for this, and the work around is more convenient than getting the function right.

@leighmcculloch leighmcculloch marked this pull request as ready for review May 18, 2023 18:23
soroban-sdk/src/auth.rs Outdated Show resolved Hide resolved
soroban-sdk/src/auth.rs Outdated Show resolved Hide resolved
@leighmcculloch
Copy link
Member Author

I'm going to hold this change and do more experimentation with it.

@leighmcculloch leighmcculloch marked this pull request as draft May 18, 2023 20:37
leighmcculloch added a commit that referenced this pull request May 18, 2023
### What
Move env auth testutils into sdk

### Why
When I moved #951, I was going to leave the auth testutils separate
until a later date, but it is pretty odd having them sit so separately.
Especially if we do #952.
@leighmcculloch
Copy link
Member Author

Holding this because it's near impossible to use multiple contractimpls now. It has always been tricky, but seems like it has gotten worse. Using this is really dependent on #268.

@leighmcculloch leighmcculloch marked this pull request as ready for review June 23, 2023 00:29
graydon pushed a commit that referenced this pull request Jun 23, 2023
### What
Add `#[contract]` macro that generates a contract client for the
contract, and make #[contractimpl] only add functions to the existing
contract client.

### Why
To support multiple `#[contractimpl]` per contract.

For contracts that have multiple impls, it is not ideal if there are
multiple clients for that one contract. Ideally clients appear in the
same way everywhere, and anyone importing the contract will see a single
flat client.

Since macros cannot coordinate, there's no way for the first
contractimpl to output the client struct and others to skip it. Today
what happens is a compile error is shown because there are multiple
clients generated.

Unblocks:
- #952 
- #965 
- And general better interoperability through trait sharing.

Close #268
@leighmcculloch leighmcculloch enabled auto-merge (squash) June 23, 2023 13:51
@leighmcculloch leighmcculloch merged commit 09a1746 into main Jun 23, 2023
@leighmcculloch leighmcculloch deleted the prevenience-impeticos branch June 23, 2023 13:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants