コード例 #1
0
ファイル: resu.c プロジェクト: ben--/resu
int main(int argc, char **argv)
{
    _check_args(argc, argv);

    char *user = argv[1];
    char *group = _split_group_from_user(user);

    if (0 != setgid(_gid(group))) {
        perror("resu");
        exit(1);
    }

    if (0 != setuid(_uid(user))) {
        perror("resu");
        exit(1);
    }

    execvp(argv[3], argv+3);

    /* Unreachable, except on error */
    perror("resu");
    return 1;
}
コード例 #2
0
QByteArray QNearFieldTagMifareSymbian::uid() const
{
    return _uid();
}
コード例 #3
0
QByteArray QNearFieldTagType3Symbian::uid() const
{
    return _uid();
}
コード例 #4
0
ファイル: account.cpp プロジェクト: yvanvds/yATools
y::ldap::account & y::ldap::account::uid(const UID& value) {
  _uid(value);
  return *this;
}
コード例 #5
0
ファイル: account.cpp プロジェクト: yvanvds/yATools
const UID & y::ldap::account::uid() const {
  return _uid();
}
コード例 #6
0
ファイル: account.cpp プロジェクト: yvanvds/yATools
bool y::ldap::account::save() {
  
  // remove user if needed
  if(flaggedForRemoval() && !dn().get().empty()) {
    if(isStudent()) {
      y::Smartschool().unregisterStudent(*this);
    } else {
      y::Smartschool().deleteUser(*this);
    }    
    y::samba::delUser(*this);
    
    if(isStudent())
    
    return true;
  }
  
  // accounts without DN are not valid
  if(dn().get().empty()) {
    flagForRemoval();
    return false; 
  }
  
  
  // else apply changes
  dataset values(server);
  
  // on first save, some new entries have to be added
  if(!_hasKrbName) {
    // add kerberos objectClass
    data & d = values.New(ADD);
    d.add("type", "objectClass");
    d.add("values", "kerberosSecurityObject");
    
    // add kerberos name (for short mail)
    string krbName(_uid().get());
    krbName += "@";
    krbName += utils::Config().getDomain();
    data & d1 = values.New(ADD);
    d1.add("type", "krbName");
    d1.add("values", krbName);
    _hasKrbName = true;
  }
  
  if(!_hasSchoolPersonClass) {
    data & d = values.New(ADD);
    d.add("type", "objectClass");
    d.add("values", "schoolPerson");
    _hasSchoolPersonClass = true;
  }
  
  _cn.saveToLdap(values);
  _sn.saveToLdap(values);
  _fullName.saveToLdap(values);
  _homeDir.saveToLdap(values);
  _wisaID.saveToLdap(values);
  _wisaName.saveToLdap(values);
  _mail.saveToLdap(values);
  _mailAlias.saveToLdap(values);
  _birthDay.saveToLdap(values);
  _role.saveToLdap(values);
  _groupID.saveToLdap(values);
  _schoolClass.saveToLdap(values);
  _classChange.saveToLdap(values);
  _birthPlace.saveToLdap(values);
  _gender.saveToLdap(values);
  _adminGroup.saveToLdap(values);
  _registerID.saveToLdap(values);
  _nationality.saveToLdap(values);
  _stemID.saveToLdap(values);
  _schoolID.saveToLdap(values);
  _houseNumber.saveToLdap(values);
  _houseNumberAdd.saveToLdap(values);
  _city.saveToLdap(values);
  _postalCode.saveToLdap(values);
  _street.saveToLdap(values);
  _country.saveToLdap(values);
  
  if(_password.changed()) {
    _password.saveToLdap(values);
    
#ifndef DEBUG
    samba::changePassword(_uid().get(), _passwordClearText);
#endif
      
  }
  
  if(values.elms()) {
    bool roleChanged = _role.changed();
    bool classChanged = _schoolClass.changed();
    
    server->modify(_dn(), values);
    
    if(isStaff() || isStudent()) {
      y::Smartschool().saveUser(*this);
      string message("Updating smartschool for user ");
      message += _fullName().get();
      y::utils::Log().add(message);

      // add user to group
      if(isStudent() && classChanged) {
        // this is a student
        y::Smartschool().moveUserToClass(*this, _schoolClass().get());
      } else  if(roleChanged && _role().get() == ROLE::DIRECTOR) {
        y::Smartschool().addUserToGroup(*this, "Directie", false);
      } else if (roleChanged && _role().get() == ROLE::SUPPORT) {
        y::Smartschool().addUserToGroup(*this, "Secretariaat", false);
      } else if (roleChanged && isStaff()) {
        y::Smartschool().addUserToGroup(*this, "Leerkrachten", true);
      }   
    }   
    return true;
  }
  
  if(!_ssPassword.empty()) {
    y::Smartschool().savePassword(*this);
    return true;
  }
  
  return false;
}