1
0
Fork 0
mirror of https://codeberg.org/forgejo/forgejo.git synced 2024-12-24 13:09:23 -05:00
forgejo/models/auth
Nanguan Lin d95102d650
Fix wrong xorm Delete usage (#27995)
## Bug in Gitea
I ran into this bug when I accidentally used the wrong redirect URL for
the oauth2 provider when using mssql. But the oauth2 provider still got
added.
Most of the time, we use `Delete(&some{id: some.id})` or
`In(condition).Delete(&some{})`, which specify the conditions. But the
function uses `Delete(source)` when `source.Cfg` is a `TEXT` field and
not empty. This will cause xorm `Delete` function not working in mssql.

61ff91f960/models/auth/source.go (L234-L240)

## Reason
Because the `TEXT` field can not be compared in mssql, xorm doesn't
support it according to [this
PR](https://gitea.com/xorm/xorm/pulls/2062)
[related
code](b23798dc98/internal/statements/statement.go (L552-L558))
in xorm
```go
if statement.dialect.URI().DBType == schemas.MSSQL && (col.SQLType.Name == schemas.Text ||
   col.SQLType.IsBlob() || col.SQLType.Name == schemas.TimeStampz) {
   if utils.IsValueZero(fieldValue) {
     continue
   }
   return nil, fmt.Errorf("column %s is a TEXT type with data %#v which cannot be as compare condition", col.Name, fieldValue.Interface())
   }
}
```
When using the `Delete` function in xorm, the non-empty fields will
auto-set as conditions(perhaps some special fields are not?). If `TEXT`
field is not empty, xorm will return an error. I only found this usage
after searching, but maybe there is something I missing.

---------

Co-authored-by: delvh <dev.lh@web.de>
2023-11-12 07:38:45 +00:00
..
access_token.go Enhanced auth token / remember me (#27606) 2023-10-14 00:56:41 +00:00
access_token_scope.go Enhanced auth token / remember me (#27606) 2023-10-14 00:56:41 +00:00
access_token_scope_test.go Enhanced auth token / remember me (#27606) 2023-10-14 00:56:41 +00:00
access_token_test.go Enhanced auth token / remember me (#27606) 2023-10-14 00:56:41 +00:00
auth_token.go Enhanced auth token / remember me (#27606) 2023-10-14 00:56:41 +00:00
main_test.go make writing main test easier (#27270) 2023-09-28 01:38:53 +00:00
oauth2.go Refactor Find Sources and fix bug when view a user who belongs to an unactive auth source (#27798) 2023-11-03 01:41:00 +00:00
oauth2_test.go Final round of db.DefaultContext refactor (#27587) 2023-10-14 08:37:24 +00:00
session.go Next round of db.DefaultContext refactor (#27089) 2023-09-16 14:39:12 +00:00
source.go Fix wrong xorm Delete usage (#27995) 2023-11-12 07:38:45 +00:00
source_test.go Penultimate round of db.DefaultContext refactor (#27414) 2023-10-11 04:24:07 +00:00
twofactor.go More refactoring of db.DefaultContext (#27083) 2023-09-15 06:13:19 +00:00
webauthn.go Next round of db.DefaultContext refactor (#27089) 2023-09-16 14:39:12 +00:00
webauthn_test.go Next round of db.DefaultContext refactor (#27089) 2023-09-16 14:39:12 +00:00