Merge branch 'release/v1.1.0' of https://github.com/ONLYOFFICE/DocSpace into release/v1.1.0
This commit is contained in:
commit
c0a1608691
@ -52,6 +52,7 @@ if [ "$DIST" = "debian" ] && [ "$DISTRIB_CODENAME" = "stretch" ]; then
|
||||
else
|
||||
curl https://packages.microsoft.com/config/$DIST/$REV/packages-microsoft-prod.deb -O
|
||||
fi
|
||||
echo -e "Package: *\nPin: origin \"packages.microsoft.com\"\nPin-Priority: 1002" | tee /etc/apt/preferences.d/99microsoft-prod.pref
|
||||
dpkg -i packages-microsoft-prod.deb && rm packages-microsoft-prod.deb
|
||||
|
||||
MYSQL_REPO_VERSION="$(curl https://repo.mysql.com | grep -oP 'mysql-apt-config_\K.*' | grep -o '^[^_]*' | sort --version-sort --field-separator=. | tail -n1)"
|
||||
|
@ -698,6 +698,54 @@ docker_login () {
|
||||
fi
|
||||
}
|
||||
|
||||
read_continue_installation () {
|
||||
read -p "Continue installation [Y/N]? " CHOICE_INSTALLATION
|
||||
case "$CHOICE_INSTALLATION" in
|
||||
y|Y )
|
||||
return 0
|
||||
;;
|
||||
|
||||
n|N )
|
||||
exit 0;
|
||||
;;
|
||||
|
||||
* )
|
||||
echo "Please, enter Y or N";
|
||||
read_continue_installation
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
domain_check () {
|
||||
DOMAINS=$(dig +short -x $(curl -s ifconfig.me) | sed 's/\.$//')
|
||||
|
||||
if [[ -n "$DOMAINS" ]]; then
|
||||
while IFS= read -r DOMAIN; do
|
||||
IP_ADDRESS=$(dig +short "$DOMAIN")
|
||||
if [[ -n "$IP_ADDRESS" || "$IP_ADDRESS" =~ ^127\. ]]; then
|
||||
LOCAL_RESOLVED_DOMAINS+="$DOMAIN"
|
||||
fi
|
||||
done <<< "$DOMAINS"
|
||||
|
||||
if [[ -n "$LOCAL_RESOLVED_DOMAINS" ]]; then
|
||||
DOCKER_DAEMON_FILE="/etc/docker/daemon.json"
|
||||
if ! grep -q '"dns"' "$DOCKER_DAEMON_FILE" 2>/dev/null; then
|
||||
echo "A problem was detected for ${LOCAL_RESOLVED_DOMAINS[@]} domains when using a loopback IP address or when using NAT."
|
||||
echo "Select 'Y' to continue installing with configuring the use of external IP in Docker via Google Public DNS."
|
||||
echo "Select 'N' to cancel ${PACKAGE_SYSNAME^^} ${PRODUCT^^} installation."
|
||||
if read_continue_installation; then
|
||||
if [[ -f "$DOCKER_DAEMON_FILE" ]]; then
|
||||
sed -i '/{/a\ "dns": ["8.8.8.8"],' "$DOCKER_DAEMON_FILE"
|
||||
else
|
||||
echo "{\"dns\": [\"8.8.8.8\"]}" | tee "$DOCKER_DAEMON_FILE" >/dev/null
|
||||
fi
|
||||
systemctl restart docker
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
get_container_env_parameter () {
|
||||
local CONTAINER_NAME=$1;
|
||||
local PARAMETER_NAME=$2;
|
||||
@ -1021,6 +1069,8 @@ start_installation () {
|
||||
|
||||
docker_login
|
||||
|
||||
domain_check
|
||||
|
||||
set_docspace_params
|
||||
|
||||
set_jwt_secret
|
||||
|
@ -50,9 +50,10 @@ yum localinstall -y --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusi
|
||||
MONOREV=$REV
|
||||
if [ "$REV" = "9" ]; then
|
||||
MONOREV="8"
|
||||
TESTING_REPO="--enablerepo=crb"
|
||||
[ $DIST != "redhat" ] && TESTING_REPO="--enablerepo=crb" || /usr/bin/crb enable
|
||||
update-crypto-policies --set DEFAULT:SHA1
|
||||
elif [ "$REV" = "8" ]; then
|
||||
POWERTOOLS_REPO="--enablerepo=powertools"
|
||||
[ $DIST != "redhat" ] && POWERTOOLS_REPO="--enablerepo=powertools" || /usr/bin/crb enable
|
||||
fi
|
||||
|
||||
#add rabbitmq & erlang repo
|
||||
|
@ -86,6 +86,12 @@ public class InvitationLinkHelper
|
||||
var commonLinkResult = _emailValidationKeyProvider.ValidateEmailKey(ConfirmType.LinkInvite.ToStringFast() + (int)employeeType,
|
||||
key, _emailValidationKeyProvider.ValidEmailKeyInterval);
|
||||
|
||||
if (commonLinkResult == ValidationResult.Invalid)
|
||||
{
|
||||
commonLinkResult = _emailValidationKeyProvider.ValidateEmailKey(email + ConfirmType.EmpInvite.ToStringFast() + (int)employeeType,
|
||||
key, _emailValidationKeyProvider.ValidEmailKeyInterval);
|
||||
}
|
||||
|
||||
if (commonLinkResult != ValidationResult.Invalid)
|
||||
{
|
||||
validationResult.Result = commonLinkResult;
|
||||
|
@ -27,6 +27,11 @@ const Confirm = () => {
|
||||
const path = "/confirm";
|
||||
return (
|
||||
<Switch>
|
||||
<ConfirmRoute
|
||||
forUnauthorized
|
||||
path={`${path}/EmpInvite`}
|
||||
component={CreateUserForm}
|
||||
/>
|
||||
<ConfirmRoute
|
||||
forUnauthorized
|
||||
path={`${path}/LinkInvite`}
|
||||
|
@ -111,10 +111,12 @@ const CreateUserForm = (props) => {
|
||||
}
|
||||
|
||||
const fetchData = async () => {
|
||||
const uid = linkData.uid;
|
||||
const confirmKey = linkData.confirmHeader;
|
||||
const user = await getUserFromConfirm(uid, confirmKey);
|
||||
setUser(user);
|
||||
if (linkData.type === "LinkInvite") {
|
||||
const uid = linkData.uid;
|
||||
const confirmKey = linkData.confirmHeader;
|
||||
const user = await getUserFromConfirm(uid, confirmKey);
|
||||
setUser(user);
|
||||
}
|
||||
|
||||
window.authCallback = authCallback;
|
||||
|
||||
@ -204,6 +206,7 @@ const CreateUserForm = (props) => {
|
||||
}
|
||||
|
||||
console.error("confirm error", errorMessage);
|
||||
setIsEmailErrorShow(true);
|
||||
setEmailErrorText(errorMessage);
|
||||
setEmailValid(false);
|
||||
setIsLoading(false);
|
||||
@ -229,9 +232,10 @@ const CreateUserForm = (props) => {
|
||||
|
||||
const createConfirmUser = async (registerData, loginData, key) => {
|
||||
const { login } = props;
|
||||
const fromInviteLink = linkData.type === "LinkInvite" ? true : false;
|
||||
|
||||
const data = Object.assign(
|
||||
{ fromInviteLink: true },
|
||||
{ fromInviteLink: fromInviteLink },
|
||||
registerData,
|
||||
loginData
|
||||
);
|
||||
@ -395,7 +399,7 @@ const CreateUserForm = (props) => {
|
||||
setIsPasswordErrorShow(true);
|
||||
};
|
||||
|
||||
const userAvatar = user.hasAvatar ? user.avatar : DefaultUserPhoto;
|
||||
const userAvatar = user && user.hasAvatar ? user.avatar : DefaultUserPhoto;
|
||||
|
||||
return (
|
||||
<StyledPage>
|
||||
@ -414,17 +418,23 @@ const CreateUserForm = (props) => {
|
||||
|
||||
{showGreeting && (
|
||||
<>
|
||||
<div className="greeting-block">
|
||||
<Avatar className="avatar" role="user" source={userAvatar} />
|
||||
<div className="user-info">
|
||||
<Text fontSize="15px" fontWeight={600}>
|
||||
{user.firstName} {user.lastName}
|
||||
</Text>
|
||||
<Text fontSize="12px" fontWeight={600} color="#A3A9AE">
|
||||
{user.department}
|
||||
</Text>
|
||||
{user && (
|
||||
<div className="greeting-block">
|
||||
<Avatar
|
||||
className="avatar"
|
||||
role="user"
|
||||
source={userAvatar}
|
||||
/>
|
||||
<div className="user-info">
|
||||
<Text fontSize="15px" fontWeight={600}>
|
||||
{user.firstName} {user.lastName}
|
||||
</Text>
|
||||
<Text fontSize="12px" fontWeight={600} color="#A3A9AE">
|
||||
{user.department}
|
||||
</Text>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
<div className="tooltip">
|
||||
<span className="tooltiptext">{t("WelcomeUser")}</span>
|
||||
|
@ -28,7 +28,8 @@ export default function withLoader(WrappedComponent) {
|
||||
if (
|
||||
(type === "PasswordChange" ||
|
||||
type === "LinkInvite" ||
|
||||
type === "Activation") &&
|
||||
type === "Activation" ||
|
||||
type === "EmpInvite") &&
|
||||
!passwordSettings
|
||||
) {
|
||||
axios
|
||||
@ -57,7 +58,7 @@ export default function withLoader(WrappedComponent) {
|
||||
}, [passwordSettings]);
|
||||
|
||||
useEffect(() => {
|
||||
if (type === "LinkInvite") {
|
||||
if (type === "LinkInvite" || type === "EmpInvite") {
|
||||
axios.all([getAuthProviders(), getCapabilities()]).catch((error) => {
|
||||
let errorMessage = "";
|
||||
if (typeof error === "object") {
|
||||
@ -85,7 +86,8 @@ export default function withLoader(WrappedComponent) {
|
||||
? props.isLoaded
|
||||
: type === "PasswordChange" ||
|
||||
type === "LinkInvite" ||
|
||||
type === "Activation"
|
||||
type === "Activation" ||
|
||||
type === "EmpInvite"
|
||||
? !!passwordSettings
|
||||
: true;
|
||||
|
||||
|
@ -413,6 +413,7 @@ class PureHome extends React.Component {
|
||||
removeTagsFromRoom,
|
||||
loadCurrentUser,
|
||||
updateProfileCulture,
|
||||
getRooms,
|
||||
} = this.props;
|
||||
|
||||
const eventData = typeof e.data === "string" ? JSON.parse(e.data) : e.data;
|
||||
@ -451,6 +452,11 @@ class PureHome extends React.Component {
|
||||
case "getUserInfo":
|
||||
res = await loadCurrentUser();
|
||||
break;
|
||||
case "getRooms":
|
||||
{
|
||||
res = await getRooms(data);
|
||||
}
|
||||
break;
|
||||
case "openModal":
|
||||
{
|
||||
const { type, options } = data;
|
||||
@ -713,6 +719,7 @@ export default inject(
|
||||
setIsPreview,
|
||||
addTagsToRoom,
|
||||
removeTagsFromRoom,
|
||||
getRooms,
|
||||
} = filesStore;
|
||||
|
||||
const { updateProfileCulture } = peopleStore.targetUserStore;
|
||||
@ -750,8 +757,12 @@ export default inject(
|
||||
setItemsSelectionTitle,
|
||||
} = secondaryProgressDataStore;
|
||||
|
||||
const { setUploadPanelVisible, startUpload, uploaded, converted } =
|
||||
uploadDataStore;
|
||||
const {
|
||||
setUploadPanelVisible,
|
||||
startUpload,
|
||||
uploaded,
|
||||
converted,
|
||||
} = uploadDataStore;
|
||||
|
||||
const { uploadEmptyFolders } = filesActionsStore;
|
||||
|
||||
@ -871,6 +882,7 @@ export default inject(
|
||||
loadCurrentUser,
|
||||
user,
|
||||
updateProfileCulture,
|
||||
getRooms,
|
||||
};
|
||||
}
|
||||
)(withRouter(observer(Home)));
|
||||
|
@ -555,8 +555,8 @@ class FilesStore {
|
||||
this.isPreview = predicate;
|
||||
};
|
||||
|
||||
setTempFilter = (filser) => {
|
||||
this.tempFilter = filser;
|
||||
setTempFilter = (filter) => {
|
||||
this.tempFilter = filter;
|
||||
};
|
||||
|
||||
setHighlightFile = (highlightFile) => {
|
||||
@ -3482,6 +3482,13 @@ class FilesStore {
|
||||
get roomsForDelete() {
|
||||
return this.folders.filter((f) => f.security.Delete);
|
||||
}
|
||||
|
||||
getRooms = async (filter) => {
|
||||
let newFilter = RoomsFilter.getDefault();
|
||||
Object.assign(newFilter, filter);
|
||||
|
||||
return await api.rooms.getRooms(newFilter);
|
||||
};
|
||||
}
|
||||
|
||||
export default FilesStore;
|
||||
|
@ -345,6 +345,10 @@
|
||||
return this.#getMethodPromise("getList");
|
||||
}
|
||||
|
||||
getRooms(filter) {
|
||||
return this.#getMethodPromise("getRooms", filter);
|
||||
}
|
||||
|
||||
getUserInfo() {
|
||||
return this.#getMethodPromise("getUserInfo");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user