Le modifiche in AspNuke
Supponiamo di voler aggiungere un ruolo a quelli già presenti ( User - Newser - Admin ), perchè, vogliamo che un nostro collaboratore sia in grado di amministrare una parte del portale a lui affidata.
Una precisazione, dopo alcuni test e qualche messagio ricevuto, l'articolo necessita di una correzione:
Nella prima modifica, è opportuno inserire il nuovo ruolo col numero assegnato al ruolo dell'ADMIN che, al momento è il 3, e all'ADMIN assegnare il 4, in modo che, il COADMIN non abbia maggiori privilegi dell'ADMIN.
Quindi il tutto diventa:
La prima modifica.
Editiamo il file consts-inc.asp nella cartella includes, e, aggiungiamo la riga:
Const ROLE_COADMIN = 3 ( o quello che vi pare....)
Const ROLE_ADMIN = 4
sotto le altre costanti dei ruoli.
La seconda modifica.
Editiamo il DB MAIN, apriamo la tabella ROLES e, posizioniamoci all'ultimo record, che è vuoto, aggiungiamo quanto segue:
Nel campo rTitle scriviamo Coadmin ( come il nome della costante che abbiamo aggiunto nel file consts-inc.asp )
Nel campo rDescription scriviamo ( Can edit Articles ) se vogliamo che il nostro Coadmin possa scrivere articoli, o, quello che più ci pare utile.
Nel campo dell'ADMIN che adesso è il 3, modifichiamo in COADMIN e nel campo che abbiamo aggiunto, modifichiamo in ADMIN ( modifichiamo anche la descrizione ), in modo da invertire i ruoli.
Editiamo la tabella Users e, individuato il record corrispondente al nostro e controlliamo che abbiamo ancora il ruolo di ADMIN, se risultasse COADMIN, un click sul campo e scegliamo ADMIN, per il collaboratore, posizioniamoci nel campo uRole, un click del mouse e apparirà un menù di scelta dove, sceglieremo appunto COADMIN, salviamo e chiudiamo il DB.
Ora, il ruolo lo abbiamo creato, rimangono da modificare tutti i files non riguardanti la scelta fatta, ovvero, il nostro collaboratore che cosa potrà fare? Abbiamo scelto di dare accesso alla scrittura degli articoli, quindi questo vuol dire che non può avere accesso ad altre parti del portale, almeno come amministratore, quindi, è necessario che, il nuovo ruolo non possa aprire, dal menù admin, nessuna parte del portale a lui interdetta.
Per impedire che il nostro collaboratore possa combinare qualche pasticcio, dobbiamo inibire l'accesso ai files richiamati dal menù di amministrazione, eccetto quello che riguarda il suo "lavoro", per cui, dobbiamo editare tutti i files presenti nella cartella INCLUDES/ADMIN, inserendo una clausola che impedisca a lui e ad ogni altro utente di penetrare nell'area di amministrazione, la clausola è la seguente:
If iRole <= ROLE_COADMIN or sPseudo = "" Then
Set oLangXML = Nothing
Response.Redirect GLOBAL_SITE_PATH & "Default.asp"
Response.End
End If
Che significa:
Se il ruolo è uguale o minore a Coadmin o il login è vuoto, allora (then) ti rimando alla pagina di Default. (In pratica... mi vuoi fregare....io ti butto fuori), è anche possibile creare una pagina semplicissima in cui inserire la classica scritta: Non hai il ruolo richiesto!!! Clicca sul bottone indietro del tuo browser. O altre amenità del genere....
La clausola va inserita in ogni file, come spiegato prima, ma dove esattamente va inserita? Ecco un esempio:
<%
If iRole <= ROLE_USER or sPseudo = "" Then
Set oLangXML = Nothing
Response.Redirect GLOBAL_SITE_PATH & "Default.asp"
Response.End
End If
' Display database page
' IN : -
' OUT : -
Sub DisplayAdminDatabase()
Dim oCn, oRs, rSQL, iLine, X, sSelectMain, sSelectForum
CreateTopTable "SQLQuery", GetTranslation("LANG_DATABASE")
Select Case Request.Form("database")
Questo è l'inizio del file /INCLUDES/ADMIN/database-inc.asp, dopo l'introduzione commentata di AspNuke, quindi, la clausola, va inserita appena dopo il TAG di apertura del codice ASP e prima dell'inizio del codice vero e proprio.
Ultima modifica, necessaria ed importante, editate il file pmessage-inc.asp, ed inserite la costante per far ricevere i messaggi privati al vostro COADMIN:
Const SITE_MAX_COADMIN_MESSAGES = 75
Spero di essere stato abbastanza chiaro nell'esporre questo articolo, per ogni chiarimento, rimango a disposizione nel forum.
Ciauzz DJ