I am trying to integrate Tigase to use my custom MySQL database to authenticate users, gets rosters and vCards. I setup the "Custom Authentication Connectors" as described at https://docs.tigase.net/tigase-server/8.0.0/Administration_Guide/html/#customAuthentication however, it only seems to authenticate users I've already added to the local Tigase database. Is it possible for Tigase to automatically create the user when the user has successfully authenticated? And, how can I setup Tigase to get the user's roster and/or vCard from my custom database?
I've tried setting up the "Custom Authentication Connectors" as described at https://docs.tigase.net/tigase-server/8.0.0/Administration_Guide/html/#customAuthentication, however, for users that only exists in my custom database, it allows login, but throws an error when I try to create a room or add a user to my roster as "tigase.db.UserNotFoundException: User does not exist" and "WARNING: NotAuthorizedException for packet."
Here is the config I am using based on https://docs.tigase.net/tigase-server/8.0.0/Administration_Guide/html/#customAuthentication:
authRepository {
default () {
cls = 'tigase.db.jdbc.TigaseCustomAuth'
'data-source' = 'db-custom'
'conn-valid-query' = 'select 1'
'user-account-status-query' = 'select onlineStatus AS account_status from tbl_contacts where id = ?'
'user-login-query' = "select vUserId AS user_id from tbl_contacts where vUserId = ? AND vPassword = ?"
}
}
I expect to be able to integrate Tigase with my custom database so that it authenticates, gets roster and vcard information from my database.
The answer to your question: " Is it possible for Tigase to automatically create the user when the user has successfully authenticated" is actually answered in the linked documentation:
To keep user accounts in sync between the authentication database and the main user database you have to add following option to the end of the database connection URL:
autoCreateUser=true
Currently it's not possible to retrieve user data from custom repository by only changing / adjusting configuration.
If you want to completely manage the users using your own database, then you'd have to implement UserRepository interface by yourself (you may take a look at JDBCRepository implementation to get an idea how to go about that)