mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-04 03:22:27 -06:00 
			
		
		
		
	
		
			
	
	
		
			34 lines
		
	
	
	
		
			979 B
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			34 lines
		
	
	
	
		
			979 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package streaming
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import (
							 | 
						||
| 
								 | 
							
									"context"
							 | 
						||
| 
								 | 
							
									"fmt"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func (p *processor) AuthorizeStreamingRequest(accessToken string) (*gtsmodel.Account, error) {
							 | 
						||
| 
								 | 
							
									ti, err := p.oauthServer.LoadAccessToken(context.Background(), accessToken)
							 | 
						||
| 
								 | 
							
									if err != nil {
							 | 
						||
| 
								 | 
							
										return nil, fmt.Errorf("AuthorizeStreamingRequest: error loading access token: %s", err)
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									uid := ti.GetUserID()
							 | 
						||
| 
								 | 
							
									if uid == "" {
							 | 
						||
| 
								 | 
							
										return nil, fmt.Errorf("AuthorizeStreamingRequest: no userid in token")
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// fetch user's and account for this user id
							 | 
						||
| 
								 | 
							
									user := >smodel.User{}
							 | 
						||
| 
								 | 
							
									if err := p.db.GetByID(uid, user); err != nil || user == nil {
							 | 
						||
| 
								 | 
							
										return nil, fmt.Errorf("AuthorizeStreamingRequest: no user found for validated uid %s", uid)
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									acct := >smodel.Account{}
							 | 
						||
| 
								 | 
							
									if err := p.db.GetByID(user.AccountID, acct); err != nil || acct == nil {
							 | 
						||
| 
								 | 
							
										return nil, fmt.Errorf("AuthorizeStreamingRequest: no account retrieved for user with id %s", uid)
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return acct, nil
							 | 
						||
| 
								 | 
							
								}
							 |