bool y::ldap::account::isStaff() const { if(_role().get() == ROLE::TEACHER ) return true; if(_role().get() == ROLE::ADMIN ) return true; if(_role().get() == ROLE::DIRECTOR) return true; if(_role().get() == ROLE::SUPPORT ) return true; return false; }
bool y::ldap::account::load(const data& d) { _uidNumber.readFromLdap(d); if(_uidNumber().get() == 0) { return false; } for(int i = 0; i < d.elms("objectClass"); i++) { if(d.getValue("objectClass", i) == "schoolPerson") { _hasSchoolPersonClass = true; break; } } _uid .readFromLdap(d); _dn .readFromLdap(d); _cn .readFromLdap(d); _sn .readFromLdap(d); _fullName .readFromLdap(d); _homeDir .readFromLdap(d); _wisaID .readFromLdap(d); _wisaName .readFromLdap(d); _mail .readFromLdap(d); _mailAlias .readFromLdap(d); _birthDay .readFromLdap(d); _password .readFromLdap(d); _role .readFromLdap(d); _groupID .readFromLdap(d); _schoolClass .readFromLdap(d); _classChange .readFromLdap(d); _birthPlace .readFromLdap(d); _gender .readFromLdap(d); _adminGroup .readFromLdap(d); _registerID .readFromLdap(d); _nationality .readFromLdap(d); _stemID .readFromLdap(d); _schoolID .readFromLdap(d); _houseNumber .readFromLdap(d); _houseNumberAdd.readFromLdap(d); _city .readFromLdap(d); _postalCode .readFromLdap(d); _street .readFromLdap(d); _country .readFromLdap(d); if(_role().get() == ROLE::NONE) { y::utils::Log().add("a user exists without a valid schoolrole: "); y::utils::Log().add(_dn().get()); } if(d.getValue("krbName" ).size()) _hasKrbName = true; TODO(this can be removed later) if(_fullName().get() == "System User") { string fn = _cn().get(); fn += " "; fn += _sn().get(); _fullName(FULL_NAME(fn), false); } _new = false; return !_new; }
void init_city_roles() { for (int i = 0; i < CITY_ROLE_MAX; i++) { City_role_data[i] = new City_role_datum; } int cur_id = 0; _role(CITY_ROLE_NULL); _name("none"); _food_percentage(100); _role(CITY_ROLE_FARMING); _name("farming"); _skill(SKILL_FARMING, 3); _food_percentage(125); _role(CITY_ROLE_HUNTING); _name("hunting"); _skill(SKILL_HUNTING, 2); // We're forgiving! _food_percentage(120); _role(CITY_ROLE_LIVESTOCK); _name("livestock"); _skill(SKILL_LIVESTOCK, 3); _food_percentage(120); _role(CITY_ROLE_MINING); _name("mining"); _skill(SKILL_MINING, 3); _resource_export(RES_STONE); _mineral_export(MINERAL_TIN); _mineral_export(MINERAL_COPPER); _mineral_export(MINERAL_IRON); _mineral_export(MINERAL_COAL); _role(CITY_ROLE_LOGGING); _name("logging"); _skill(SKILL_FORESTRY, 2); _resource_export(RES_WOOD); }
bool y::ldap::account::isStudent() const { if(_role().get() == ROLE::STUDENT) return true; return false; }
y::ldap::account & y::ldap::account::role(const ROLE& value) { _role(value); return *this; }
const ROLE & y::ldap::account::role() const { return _role(); }
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; }