public function __construct(IRestServer $server, User $user, IEntityAttributeList $attributes) { $userId = $user->Id(); $this->id = $userId; $this->emailAddress = $user->EmailAddress(); $this->firstName = $user->FirstName(); $this->lastName = $user->LastName(); $this->language = $user->Language(); $this->lastLogin = Date::FromDatabase($user->LastLogin())->ToIso(); $this->organization = $user->GetAttribute(UserAttribute::Organization); $this->phoneNumber = $user->GetAttribute(UserAttribute::Phone); $this->position = $user->GetAttribute(UserAttribute::Position); $this->statusId = $user->StatusId(); $this->timezone = $user->Timezone(); $this->username = $user->Username(); $attributeValues = $attributes->GetAttributes($userId); if (!empty($attributeValues)) { foreach ($attributeValues as $av) { $this->customAttributes[] = new CustomAttributeResponse($server, $av->Id(), $av->Label(), $av->Value()); } } foreach ($user->AllowedResourceIds() as $allowedResourceId) { $this->permissions[] = new ResourceItemResponse($server, $allowedResourceId, ''); } foreach ($user->Groups() as $group) { $this->groups[] = new GroupItemResponse($server, $group->GroupId, $group->GroupName); } if ($user->GetIsCalendarSubscriptionAllowed()) { $url = new CalendarSubscriptionUrl($user->GetPublicId(), null, null); $this->icsUrl = $url->__toString(); } }
public static function FromDatabase($row, Colony $c = NULL) { $user = new User(); $user->ID($row['ID']); $user->Username($row['username']); $user->AuthorisationLevel(Database::Instance()->ExecuteQuery("SELECT * FROM authorisation WHERE ID = " . (int) $row['authorisationID'] . ";", "SELECT")); $user->PrimaryEmail($row['primary_email']); $user->SecondaryEmail($row['secondary_email']); $user->RegistrationTime($row['registration_time']); $user->LastOnline($row['last_online']); $user->IsBanned($row['is_banned']); $user->BannedUntil($row['banned_until']); // Load authorisation level name $levelNameRow = Database::Instance()->ExecuteQuery("SELECT name FROM authorisation WHERE level = " . $user->AuthorisationLevel() . ";", "SELECT"); $user->AuthorisationLevelName($levelNameRow['name']); // Load home colony if ($c == NULL) { $colonyDatabaseRow = Database::Instance()->ExecuteQuery("SELECT * FROM colony WHERE userID = " . $user->ID() . " AND is_home_colony = 1", "SELECT"); $user->CurrentColony(Colony::FromDatabase($colonyDatabaseRow, $user)); } else { $user->CurrentColony($c); } // Load user's technologies $technologyDatabaseRow = Database::Instance()->ExecuteQuery("SELECT * FROM user_technology WHERE userID = " . $user->ID(), "SELECT"); $user->Technologies(TechnologyGroup::FromDatabase($technologyDatabaseRow, $user)); // Load user's officers $officerDatabaseRow = Database::Instance()->ExecuteQuery("SELECT * FROM user_officers WHERE userID = " . $user->ID(), "SELECT"); $user->Officers(OfficerGroup::FromDatabase($officerDatabaseRow, $user)); // Return user return $user; }
/** * @param User $user * @return void */ public function Update(User $user) { $userId = $user->Id(); $db = ServiceLocator::GetDatabase(); $updateUserCommand = new UpdateUserCommand($user->Id(), $user->StatusId(), $user->encryptedPassword, $user->passwordSalt, $user->FirstName(), $user->LastName(), $user->EmailAddress(), $user->Username(), $user->Homepage(), $user->Timezone(), $user->LastLogin(), $user->GetIsCalendarSubscriptionAllowed(), $user->GetPublicId(), $user->Language(), $user->GetDefaultScheduleId()); $db->Execute($updateUserCommand); $removedPermissions = $user->GetRemovedPermissions(); foreach ($removedPermissions as $resourceId) { $db->Execute(new DeleteUserResourcePermission($userId, $resourceId)); } $addedPermissions = $user->GetAddedPermissions(); foreach ($addedPermissions as $resourceId) { $db->Execute(new AddUserResourcePermission($userId, $resourceId)); } if ($user->HaveAttributesChanged()) { $updateAttributesCommand = new UpdateUserAttributesCommand($userId, $user->GetAttribute(UserAttribute::Phone), $user->GetAttribute(UserAttribute::Organization), $user->GetAttribute(UserAttribute::Position)); $db->Execute($updateAttributesCommand); } $removedPreferences = $user->GetRemovedEmailPreferences(); foreach ($removedPreferences as $event) { $db->Execute(new DeleteEmailPreferenceCommand($userId, $event->EventCategory(), $event->EventType())); } $addedPreferences = $user->GetAddedEmailPreferences(); foreach ($addedPreferences as $event) { $db->Execute(new AddEmailPreferenceCommand($userId, $event->EventCategory(), $event->EventType())); } foreach ($user->GetRemovedAttributes() as $removed) { $db->Execute(new RemoveAttributeValueCommand($removed->AttributeId, $user->Id())); } foreach ($user->GetAddedAttributes() as $added) { $db->Execute(new AddAttributeValueCommand($added->AttributeId, $added->Value, $user->Id(), CustomAttributeCategory::USER)); } foreach ($user->GetPreferences()->AddedPreferences() as $added) { $db->Execute(new AddUserPreferenceCommand($user->Id(), $added, $user->GetPreference($added))); } foreach ($user->GetPreferences()->ChangedPreferences() as $updated) { $db->Execute(new UpdateUserPreferenceCommand($user->Id(), $updated, $user->GetPreference($updated))); } foreach ($user->GetRemovedGroups() as $removed) { $db->Execute(new DeleteUserGroupCommand($user->Id(), $removed->GroupId)); } foreach ($user->GetAddedGroups() as $added) { $db->Execute(new AddUserGroupCommand($user->Id(), $added->GroupId)); } }
function main() { try { global $sid; global $session; global $returnURI; global $DOMAIN; global $FROM_ADDR; global $X_MAILER; $PHP_SELF = $_SERVER['PHP_SELF']; $message = $_REQUEST['message']; $captchaCode = $_REQUEST['txtCaptchaCode']; $random = $_REQUEST['txtRandom']; $post = $_POST['blnPost']; $username = $_POST['txtUsername']; $password = $_POST['txtPassword']; $repassword = $_POST['txtRePassword']; $email = $_POST['txtEmail']; $emailPassword = $_POST['btnEmailPassword'] != ""; $create = $_POST['btnCreateAccount'] != ""; if (!$create) { $create = $_GET['create'] != ""; } if (!$emailPassword) { $emailPassword = $_GET['emailPassword'] != ""; } if ($post) { if ($emailPassword) { $user = new User("username='******'"); if ($user->Email() != '') { $capLogin = GetCap('capLogin'); $sub = GetCap('capPassword'); $path = dirname($_SERVER['SCRIPT_NAME']); $msg = GetCap('capBelowAreYourCredentials') . "\r\n"; $msg .= "Username: "******"\r\n"; $msg .= 'Password: '******'capEmailHasBeenSent') . '</center></b>'; } else { print "<b><center>" . GetCap('capUserAccountDoesn\'tHaveEmailAddress</center></b>'); } $username = $user->UserName(); $email = $user->Email(); } elseif ($create) { $captcha = new CaptchasDotNet('demo', 'secret'); if (!$captcha->validate($random)) { $password = $_POST['txtPassword']; $rePassword = $_POST['txtRePassword']; print "<center>" . GetCap('capCaptchaWasReused') . "</center>"; $session->ReusedCaptcha("session", $session->ID(), $random); } elseif (!$captcha->verify($captchaCode)) { $password = $_POST['txtPassword']; $rePassword = $_POST['txtRePassword']; print "<center>" . GetCap('capInvalidConfirmationCode') . "</center>"; $session->InvalidConfirmationCode($captchCode); } elseif ($password == $repassword) { $user = new User(); $user->UserName($username); $user->Password($password); $user->Email($email); if (UpdateObject($user)) { $session->UserID($user->ID()); $session->LoggedIn(true); UpdateObject($session); $username = $user->UserName(); $email = $user->Email(); ReturnURI(); print '<center>' . GetCap("capUpdateSucceded") . '</center>'; } } else { $password = $_POST['txtPassword']; $rePassword = $_POST['txtRePassword']; print "<center>" . GetCap('capPasswordsDoNotMatch') . "</center>"; } } } /* TODO:PREROLL Go to captcha.net and register an actual account (not demo) before rolling to production */ if ($create) { $captcha = new CaptchasDotNet('demo', 'secret'); } ?> <form name="frm" method="post" action="<?php echo "login.php?returnURI={$returnURI}"; ?> "> <table> <tr> <td> <b><?php echo GetCap('capUsername'); ?> : </b> </td> <td> <input type="text" name="txtUsername" value="<?php echo $username; ?> "/> </td> </tr> <?php if ($create) { ?> <tr> <td> <b><?php echo GetCap('capPassword'); ?> : </b> </td> <td> <input type="password" name="txtPassword" value="<?php echo $password; ?> "/> </td> </tr> <tr> <td> <b><?php echo GetCap('capRe-typePassword'); ?> : </b> </td> <td> <input type="password" name="txtRePassword" value="<?php echo $_POST['txtRePassword']; ?> "/> </td> </tr> <tr> <td> <b><?php echo GetCap('capEmail (optional)'); ?> : </b> </td> <td> <input type="text" name="txtEmail" value="<?php echo $email; ?> "/> </td> <td> <i><?php echo GetCap('capIn case you forget your password we can email you a new one.'); ?> </i> </td> </tr> <tr valign="top"> <td> <b><?php echo GetCap('capEnterConfirmationCodeFromPicture'); ?> : </b> </td> <td> <input type="text" name="txtCaptchaCode"/> <input type="hidden" name="txtRandom" value="<?php echo $captcha->random(); ?> " /> <br /><br/><br/> <a href="<?php echo $captcha->audio_url(); ?> "><?php echo GetCap('capPhoenieticSpelling(mp3)'); ?> </a> </td> <td> <?php echo $captcha->Image(false, 'captchas.net', GetCap('capLoadingCaptcha...')); ?> </td> </tr> <tr> <td> <input type="submit" name="btnCreateAccount" value="<?php echo GetCap('capCreateAccount'); ?> "/> </td> </tr> <?php } if ($emailPassword) { ?> <tr> <td> </td> <td> <input type="submit" name="btnEmailPassword" value="<?php echo GetCap('capEmailMePassword'); ?> "/> </td> </tr> <?php } ?> <tr> <td> <input type="hidden" name="blnPost" value="1"/> </td> </tr> </table> </form> <?php } catch (Exception $ex) { ProcessException($ex); } }