Patch level :4.0 706

Files correlati     :ba0, ba1
Ricompilazione Demo : [ ]
Commento            :riporto gestione usr/groups scritto sulla 3.0


git-svn-id: svn://10.65.10.50/trunk@15333 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2007-05-14 16:05:54 +00:00
parent 6e15286344
commit 1baacbd057
3 changed files with 42 additions and 14 deletions

View File

@ -202,23 +202,19 @@ void TMask::read_mask(
if (num == 0) if (num == 0)
{ {
_total_time = clock()-start_t;
TFilename prof; make_profile_name(prof);
TFilename prof; if (prof.exist())
if (make_profile_name(prof))
{ {
// Costruisce la lista dei gruppi di appartenenza dell'utente // Costruisce la lista dei gruppi di appartenenza dell'utente
TString_array users_and_groups; const TString_array& uag = user_and_groups();
for (TString u = user(); u.full(); u = cache().get(LF_USER, u, USR_GROUPNAME)) TConfig ini(prof);
users_and_groups.add(u); FOR_EACH_ARRAY_ROW_BACK(uag, c, utonto)
{
TConfig ini(prof);
FOR_EACH_ARRAY_ROW_BACK(users_and_groups, c, utonto)
{
*utonto << "_Locks"; *utonto << "_Locks";
if (ini.set_paragraph(*utonto)) if (ini.set_paragraph(*utonto))
{ {
TBit_array read_only; TBit_array read_only;
TAuto_token_string lfields(ini.get("Lock")); TAuto_token_string lfields(ini.get("Lock"));
TAuto_token_string ufields(ini.get("Unlock")); TAuto_token_string ufields(ini.get("Unlock"));
if (ufields.find("*")>=0) if (ufields.find("*")>=0)

View File

@ -872,4 +872,34 @@ TDB_cache& cache()
} }
TRecord_cache& rec_cache(int file) TRecord_cache& rec_cache(int file)
{ return cache().rec_cache(file); } { return cache().rec_cache(file); }
// Utente corrente (elemento 0) e suoi gruppi di appartenenza (dall'elemento 1 in poi)
const TString_array& user_and_groups()
{
static TString_array _uag;
if (_uag.empty() || _uag.row(0) != user())
{
_uag.destroy();
_uag.add(user()); // Inserisco l'utente stesso come primo
if (prefix_valid()) // Costruisce lista dei gruppi solo se possibile
{
TLocalisamfile user(LF_USER);
int err = NOERR;
while (err == NOERR)
{
user.put(USR_USERNAME, _uag.row(_uag.last()));
err = user.read();
if (err == NOERR)
{
const TString& group = user.get(USR_GROUPNAME);
if (group.full())
_uag.add(group);
else
err = _iskeynotfound;
}
}
}
}
return _uag;
}

View File

@ -9,6 +9,8 @@
#include <isam.h> #include <isam.h>
#endif #endif
#include <user.h>
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// TRecord_Array // TRecord_Array
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
@ -269,7 +271,7 @@ public:
TDB_cache& cache(); TDB_cache& cache();
TRecord_cache& rec_cache(int file); TRecord_cache& rec_cache(int file);
const TString_array& user_and_groups();
#endif #endif