-
-
Notifications
You must be signed in to change notification settings - Fork 351
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
464e3d1
commit 684bd56
Showing
39 changed files
with
1,060 additions
and
96 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -41,7 +41,7 @@ type AuthTestSuite struct { | |
testAccount *gtsmodel.Account | ||
testApplication *gtsmodel.Application | ||
testUser *gtsmodel.User | ||
testClient *oauth.Client | ||
testClient *gtsmodel.Client | ||
config *config.Config | ||
} | ||
|
||
|
@@ -83,7 +83,7 @@ func (suite *AuthTestSuite) SetupSuite() { | |
Email: "[email protected]", | ||
AccountID: acctID, | ||
} | ||
suite.testClient = &oauth.Client{ | ||
suite.testClient = >smodel.Client{ | ||
ID: "a-known-client-id", | ||
Secret: "some-secret", | ||
Domain: fmt.Sprintf("%s://%s", c.Protocol, c.Host), | ||
|
@@ -112,8 +112,8 @@ func (suite *AuthTestSuite) SetupTest() { | |
suite.db = db | ||
|
||
models := []interface{}{ | ||
&oauth.Client{}, | ||
&oauth.Token{}, | ||
>smodel.Client{}, | ||
>smodel.Token{}, | ||
>smodel.User{}, | ||
>smodel.Account{}, | ||
>smodel.Application{}, | ||
|
@@ -145,8 +145,8 @@ func (suite *AuthTestSuite) SetupTest() { | |
// TearDownTest drops the oauth_clients table and closes the pg connection after each test | ||
func (suite *AuthTestSuite) TearDownTest() { | ||
models := []interface{}{ | ||
&oauth.Client{}, | ||
&oauth.Token{}, | ||
>smodel.Client{}, | ||
>smodel.Token{}, | ||
>smodel.User{}, | ||
>smodel.Account{}, | ||
>smodel.Application{}, | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
78 changes: 78 additions & 0 deletions
78
internal/db/bundb/migrations/20210816411877_struct_validation/account.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
/* | ||
GoToSocial | ||
Copyright (C) 2021 GoToSocial Authors [email protected] | ||
This program is free software: you can redistribute it and/or modify | ||
it under the terms of the GNU Affero General Public License as published by | ||
the Free Software Foundation, either version 3 of the License, or | ||
(at your option) any later version. | ||
This program is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU Affero General Public License for more details. | ||
You should have received a copy of the GNU Affero General Public License | ||
along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
|
||
package gtsmodel | ||
|
||
import ( | ||
"crypto/rsa" | ||
"time" | ||
) | ||
|
||
// Account represents either a local or a remote fediverse account, gotosocial or otherwise (mastodon, pleroma, etc). | ||
type Account struct { | ||
ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database | ||
CreatedAt time.Time `validate:"-" bun:",nullzero,notnull,default:current_timestamp"` // when was item created | ||
UpdatedAt time.Time `validate:"-" bun:",nullzero,notnull,default:current_timestamp"` // when was item last updated | ||
Username string `validate:"required" bun:",nullzero,notnull,unique:userdomain"` // Username of the account, should just be a string of [a-zA-Z0-9_]. Can be added to domain to create the full username in the form ``[username]@[domain]`` eg., ``[email protected]``. Username and domain should be unique *with* each other | ||
Domain string `validate:"omitempty,fqdn" bun:",nullzero,unique:userdomain"` // Domain of the account, will be null if this is a local account, otherwise something like ``example.org`` or ``mastodon.social``. Should be unique with username. | ||
AvatarMediaAttachmentID string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // Database ID of the media attachment, if present | ||
AvatarMediaAttachment *MediaAttachment `validate:"-" bun:"rel:belongs-to"` // MediaAttachment corresponding to avatarMediaAttachmentID | ||
AvatarRemoteURL string `validate:"omitempty,url" bun:",nullzero"` // For a non-local account, where can the header be fetched? | ||
HeaderMediaAttachmentID string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // Database ID of the media attachment, if present | ||
HeaderMediaAttachment *MediaAttachment `validate:"-" bun:"rel:belongs-to"` // MediaAttachment corresponding to headerMediaAttachmentID | ||
HeaderRemoteURL string `validate:"omitempty,url" bun:",nullzero"` // For a non-local account, where can the header be fetched? | ||
DisplayName string `validate:"-" bun:",nullzero"` // DisplayName for this account. Can be empty, then just the Username will be used for display purposes. | ||
Fields []Field `validate:"-"` // a key/value map of fields that this account has added to their profile | ||
Note string `validate:"-" bun:",nullzero"` // A note that this account has on their profile (ie., the account's bio/description of themselves) | ||
Memorial bool `validate:"-" bun:",nullzero,default:false"` // Is this a memorial account, ie., has the user passed away? | ||
AlsoKnownAs string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // This account is associated with x account id | ||
MovedToAccountID string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // This account has moved this account id in the database | ||
Bot bool `validate:"-" bun:",nullzero,default:false"` // Does this account identify itself as a bot? | ||
Reason string `validate:"-" bun:",nullzero"` // What reason was given for signing up when this account was created? | ||
Locked bool `validate:"-" bun:",nullzero,default:true"` // Does this account need an approval for new followers? | ||
Discoverable bool `validate:"-" bun:",nullzero,default:false"` // Should this account be shown in the instance's profile directory? | ||
Privacy Visibility `validate:"oneof=public unlocked followers_only mutuals_only direct" bun:",nullzero,notnull,default:'public'"` // Default post privacy for this account | ||
Sensitive bool `validate:"-" bun:",nullzero,default:false"` // Set posts from this account to sensitive by default? | ||
Language string `validate:"-" bun:",nullzero,notnull,default:'en'"` // What language does this account post in? | ||
URI string `validate:"required,url" bun:",nullzero,notnull,unique"` // ActivityPub URI for this account. | ||
URL string `validate:"omitempty,url" bun:",unique,nullzero"` // Web URL for this account's profile | ||
LastWebfingeredAt time.Time `validate:"-" bun:",nullzero,notnull,default:current_timestamp"` // Last time this account was refreshed/located with webfinger. | ||
InboxURI string `validate:"omitempty,url" bun:",nullzero,unique"` // Address of this account's ActivityPub inbox, for sending activity to | ||
OutboxURI string `validate:"omitempty,url" bun:",nullzero,unique"` // Address of this account's activitypub outbox | ||
FollowingURI string `validate:"omitempty,url" bun:",nullzero,unique"` // URI for getting the following list of this account | ||
FollowersURI string `validate:"omitempty,url" bun:",nullzero,unique"` // URI for getting the followers list of this account | ||
FeaturedCollectionURI string `validate:"omitempty,url" bun:",nullzero,unique"` // URL for getting the featured collection list of this account | ||
ActorType string `validate:"oneof=Application Group Organization Person Service " bun:",nullzero,notnull"` // What type of activitypub actor is this account? | ||
PrivateKey *rsa.PrivateKey `validate:"required_without=Domain"` // Privatekey for validating activitypub requests, will only be defined for local accounts | ||
PublicKey *rsa.PublicKey `validate:"required"` // Publickey for encoding activitypub requests, will be defined for both local and remote accounts | ||
PublicKeyURI string `validate:"required" bun:",nullzero,notnull"` // Web-reachable location of this account's public key | ||
SensitizedAt time.Time `validate:"-" bun:",nullzero"` // When was this account set to have all its media shown as sensitive? | ||
SilencedAt time.Time `validate:"-" bun:",nullzero"` // When was this account silenced (eg., statuses only visible to followers, not public)? | ||
SuspendedAt time.Time `validate:"-" bun:",nullzero"` // When was this account suspended (eg., don't allow it to log in/post, don't accept media/posts from this account) | ||
HideCollections bool `validate:"-" bun:",nullzero,default:false"` // Hide this account's collections | ||
SuspensionOrigin string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // id of the database entry that caused this account to become suspended -- can be an account ID or a domain block ID | ||
} | ||
|
||
// Field represents a key value field on an account, for things like pronouns, website, etc. | ||
// VerifiedAt is optional, to be used only if Value is a URL to a webpage that contains the | ||
// username of the user. | ||
type Field struct { | ||
Name string `validate:"required"` // Name of this field. | ||
Value string `validate:"required"` // Value of this field. | ||
VerifiedAt time.Time `validate:"-" bun:",nullzero"` // This field was verified at (optional). | ||
} |
32 changes: 32 additions & 0 deletions
32
internal/db/bundb/migrations/20210816411877_struct_validation/application.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
/* | ||
GoToSocial | ||
Copyright (C) 2021 GoToSocial Authors [email protected] | ||
This program is free software: you can redistribute it and/or modify | ||
it under the terms of the GNU Affero General Public License as published by | ||
the Free Software Foundation, either version 3 of the License, or | ||
(at your option) any later version. | ||
This program is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU Affero General Public License for more details. | ||
You should have received a copy of the GNU Affero General Public License | ||
along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
|
||
package gtsmodel | ||
|
||
// Application represents an application that can perform actions on behalf of a user. | ||
// It is used to authorize tokens etc, and is associated with an oauth client id in the database. | ||
type Application struct { | ||
ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull"` // id of this application in the db | ||
Name string `validate:"required" bun:",nullzero,notnull"` // name of the application given when it was created (eg., 'tusky') | ||
Website string `validate:"omitempty,url" bun:",nullzero"` // website for the application given when it was created (eg., 'https://tusky.app') | ||
RedirectURI string `validate:"required" bun:",nullzero,notnull"` // redirect uri requested by the application for oauth2 flow | ||
ClientID string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // id of the associated oauth client entity in the db | ||
ClientSecret string `validate:"required,uuid" bun:",nullzero,notnull"` // secret of the associated oauth client entity in the db | ||
Scopes string `validate:"required" bun:",nullzero,default:'read'"` // scopes requested when this app was created | ||
VapidKey string `validate:"-" bun:",nullzero"` // a vapid key generated for this app when it was created | ||
} |
Oops, something went wrong.