added additional check for empty ExternalAuth data in case the provider api changes
This commit is contained in:
		
							parent
							
								
									0ac4c9e1fc
								
							
						
					
					
						commit
						93b3788448
					
				| 
						 | 
					@ -35,6 +35,7 @@ func (dao *Dao) FindExternalAuthByProvider(provider, providerId string) (*models
 | 
				
			||||||
	model := &models.ExternalAuth{}
 | 
						model := &models.ExternalAuth{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := dao.ExternalAuthQuery().
 | 
						err := dao.ExternalAuthQuery().
 | 
				
			||||||
 | 
							AndWhere(dbx.Not(dbx.HashExp{"providerId": ""})). // exclude empty providerIds
 | 
				
			||||||
		AndWhere(dbx.HashExp{
 | 
							AndWhere(dbx.HashExp{
 | 
				
			||||||
			"provider":   provider,
 | 
								"provider":   provider,
 | 
				
			||||||
			"providerId": providerId,
 | 
								"providerId": providerId,
 | 
				
			||||||
| 
						 | 
					@ -71,6 +72,12 @@ func (dao *Dao) FindExternalAuthByUserIdAndProvider(userId, provider string) (*m
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// SaveExternalAuth upserts the provided ExternalAuth model.
 | 
					// SaveExternalAuth upserts the provided ExternalAuth model.
 | 
				
			||||||
func (dao *Dao) SaveExternalAuth(model *models.ExternalAuth) error {
 | 
					func (dao *Dao) SaveExternalAuth(model *models.ExternalAuth) error {
 | 
				
			||||||
 | 
						// extra check the model data in case the provider's API response
 | 
				
			||||||
 | 
						// changes and no longer returns the expected fields
 | 
				
			||||||
 | 
						if model.UserId == "" || model.Provider == "" || model.ProviderId == "" {
 | 
				
			||||||
 | 
							return errors.New("Missing required ExternalAuth fields.")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return dao.Save(model)
 | 
						return dao.Save(model)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -123,6 +123,12 @@ func TestSaveExternalAuth(t *testing.T) {
 | 
				
			||||||
	app, _ := tests.NewTestApp()
 | 
						app, _ := tests.NewTestApp()
 | 
				
			||||||
	defer app.Cleanup()
 | 
						defer app.Cleanup()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// save with empty provider data
 | 
				
			||||||
 | 
						emptyAuth := &models.ExternalAuth{}
 | 
				
			||||||
 | 
						if err := app.Dao().SaveExternalAuth(emptyAuth); err == nil {
 | 
				
			||||||
 | 
							t.Fatal("Expected error, got nil")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	auth := &models.ExternalAuth{
 | 
						auth := &models.ExternalAuth{
 | 
				
			||||||
		UserId:     "97cc3d3d-6ba2-383f-b42a-7bc84d27410c",
 | 
							UserId:     "97cc3d3d-6ba2-383f-b42a-7bc84d27410c",
 | 
				
			||||||
		Provider:   "test",
 | 
							Provider:   "test",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue