| 
									
										
										
										
											2021-06-19 11:18:55 +02:00
										 |  |  | package streaming | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"context" | 
					
						
							|  |  |  | 	"fmt" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/superseriousbusiness/gotosocial/internal/gtsmodel" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-25 15:34:33 +02:00
										 |  |  | func (p *processor) AuthorizeStreamingRequest(ctx context.Context, accessToken string) (*gtsmodel.Account, error) { | 
					
						
							| 
									
										
										
										
											2021-06-19 11:18:55 +02:00
										 |  |  | 	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{} | 
					
						
							| 
									
										
										
										
											2021-08-25 15:34:33 +02:00
										 |  |  | 	if err := p.db.GetByID(ctx, uid, user); err != nil || user == nil { | 
					
						
							| 
									
										
										
										
											2021-06-19 11:18:55 +02:00
										 |  |  | 		return nil, fmt.Errorf("AuthorizeStreamingRequest: no user found for validated uid %s", uid) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-25 15:34:33 +02:00
										 |  |  | 	acct, err := p.db.GetAccountByID(ctx, user.AccountID) | 
					
						
							|  |  |  | 	if err != nil || acct == nil { | 
					
						
							| 
									
										
										
										
											2021-06-19 11:18:55 +02:00
										 |  |  | 		return nil, fmt.Errorf("AuthorizeStreamingRequest: no account retrieved for user with id %s", uid) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return acct, nil | 
					
						
							|  |  |  | } |