Criando novo backend para User, Group e Auth

De Wiki Expresso V3
Ir para: navegação, pesquisa

Conteúdo

Conceito

O Tinebase, atualmente, é feito somente para trabalhar com banco de dados relacional. A inclusão de um backend não relacional, como Ldap ou Active Directory, simplemente cria uma forma de sincronização desta base de usuários com o Sql.

Como Fazer

Criação do backend para usuário e grupo

Criar as classes de backend para usuário e grupo estendendo das classes Tinebase_User_Abstract e Tinebase_Group_Abstract respectivamente. Ao se estender estas classes, os métodos presentes nas interfaces Tinebase_User_Interface e Tinebase_Group_Interface devem ser implementados;

Criação do backend para autenticação

Criar a classe de backend para autenticação implementando a interface Tinebase_Auth_Interface;

OBS: as classes novas devem ser criadas dentro da estrutura de plugins, no diretório library/Custom.

Registrar as novas classes

Registrar os novos backends no arquivo init_plugins.php utilizando o metodo addCustomBackend presentes estaticamente nas classes User, Group e Auth:

* Tinebase_User::addCustomBackend($_name, $_userBackendClassName, $_groupBackendClassName);
* Tinebase_Auth::addCustomBackend($_name, $_className);

Alterar o arquivo AuthenticationPanel.js

Uma vantagem apresentada do site do Tine 2.0 é que a camada de visualização é totalmente independente do PHP, neste caso é uma desvantagem, sendo necessário alterar o arquivo de javascript para incluir novas opções para o novo backend. A alteração a seguir impactará no Setup.

  • Deve-se alterar, primeiramente, incluir o nome do novo backend aos atributos authenticationBackendComboStore e accountsStorageComboStore:
... 
getFormItems: function () {
    var setupRequired = Tine.Setup.registry.get('setupRequired');
                
    // common config for all combos in this setup
    var commonComboConfig = {
        xtype: 'combo',
        listWidth: 300,
...
    this.authenticationBackendComboStore = [['Sql', 'Sql'], ['Ldap', 'Ldap'], ['Imap', 'IMAP'], ['CustomBackend', 'CustomBackend']];
    this.accountsStorageComboStore = [['Sql', 'Sql'], ['Ldap', 'Ldap'], ['CustomBackend', 'CustomBackend']];
...
  • Depois deve-se criar dois novos métodos para criar a estrutura de opções que serão apresentadas ao se selecionar o novo backend tando para autenticação quanto para contas. O nome dos métodos devem ter o seguinte formato:
  getAuthenticationBackendItem function(commonComboConfig) { } 
  getAccountStorageBackendItem function(commonComboConfig) { }

OBS: veja como exemplo os métodos getAuthenticationSqlItem e getAccountStorageSqlItem.

Ferramentas pessoais
Espaços nominais

Variantes
Ações
Navegação
Ferramentas