mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 11:52:24 -05:00 
			
		
		
		
	smtp + email confirmation (#285)
* add smtp configuration * add email confirm + reset templates * add email sender to testrig * flesh out the email sender interface * go fmt * golint * update from field with more clarity * tidy up the email formatting * fix tests * add email sender to processor * tidy client api processing a bit * further tidying in fromClientAPI * pin new account to user * send msg to processor on new account creation * generate confirm email uri * remove emailer from account processor again * add processCreateAccountFromClientAPI * move emailer accountprocessor => userprocessor * add email sender to user processor * SendConfirmEmail function * add noop email sender * use noop email sender in tests * only assemble message if callback is not nil * use noop email sender if no smtp host is defined * minify email html before sending * fix wrong email address * email confirm test * fmt * serve web hndler * add email confirm handler * init test log properly on testrig * log emails that *would* have been sent * go fmt ./... * unexport confirm email handler * updatedAt * test confirm email function * don't allow tokens older than 7 days * change error message a bit * add basic smtp docs * add a few more snippets * typo * add email sender to outbox tests * don't use dutch wikipedia link * don't minify email html
This commit is contained in:
		
					parent
					
						
							
								de1f90ee46
							
						
					
				
			
			
				commit
				
					
						2aaec82732
					
				
			
		
					 56 changed files with 1543 additions and 398 deletions
				
			
		|  | @ -28,6 +28,7 @@ import ( | |||
| 	apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model" | ||||
| 	"github.com/superseriousbusiness/gotosocial/internal/config" | ||||
| 	"github.com/superseriousbusiness/gotosocial/internal/db" | ||||
| 	"github.com/superseriousbusiness/gotosocial/internal/email" | ||||
| 	"github.com/superseriousbusiness/gotosocial/internal/federation" | ||||
| 	"github.com/superseriousbusiness/gotosocial/internal/gtserror" | ||||
| 	"github.com/superseriousbusiness/gotosocial/internal/gtsmodel" | ||||
|  | @ -179,6 +180,9 @@ type Processor interface { | |||
| 
 | ||||
| 	// UserChangePassword changes the password for the given user, with the given form. | ||||
| 	UserChangePassword(ctx context.Context, authed *oauth.Auth, form *apimodel.PasswordChangeRequest) gtserror.WithCode | ||||
| 	// UserConfirmEmail confirms an email address using the given token. | ||||
| 	// The user belonging to the confirmed email is also returned. | ||||
| 	UserConfirmEmail(ctx context.Context, token string) (*gtsmodel.User, gtserror.WithCode) | ||||
| 
 | ||||
| 	/* | ||||
| 		FEDERATION API-FACING PROCESSING FUNCTIONS | ||||
|  | @ -252,8 +256,17 @@ type processor struct { | |||
| 	federationProcessor federationProcessor.Processor | ||||
| } | ||||
| 
 | ||||
| // NewProcessor returns a new Processor that uses the given federator | ||||
| func NewProcessor(config *config.Config, tc typeutils.TypeConverter, federator federation.Federator, oauthServer oauth.Server, mediaHandler media.Handler, storage *kv.KVStore, timelineManager timeline.Manager, db db.DB) Processor { | ||||
| // NewProcessor returns a new Processor. | ||||
| func NewProcessor( | ||||
| 	config *config.Config, | ||||
| 	tc typeutils.TypeConverter, | ||||
| 	federator federation.Federator, | ||||
| 	oauthServer oauth.Server, | ||||
| 	mediaHandler media.Handler, | ||||
| 	storage *kv.KVStore, | ||||
| 	timelineManager timeline.Manager, | ||||
| 	db db.DB, | ||||
| 	emailSender email.Sender) Processor { | ||||
| 	fromClientAPI := make(chan messages.FromClientAPI, 1000) | ||||
| 	fromFederator := make(chan messages.FromFederator, 1000) | ||||
| 
 | ||||
|  | @ -262,7 +275,7 @@ func NewProcessor(config *config.Config, tc typeutils.TypeConverter, federator f | |||
| 	accountProcessor := account.New(db, tc, mediaHandler, oauthServer, fromClientAPI, federator, config) | ||||
| 	adminProcessor := admin.New(db, tc, mediaHandler, fromClientAPI, config) | ||||
| 	mediaProcessor := mediaProcessor.New(db, tc, mediaHandler, storage, config) | ||||
| 	userProcessor := user.New(db, config) | ||||
| 	userProcessor := user.New(db, emailSender, config) | ||||
| 	federationProcessor := federationProcessor.New(db, tc, config, federator, fromFederator) | ||||
| 
 | ||||
| 	return &processor{ | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue