Merge pull request #237 from openreplay/dev

v1.3.6
This commit is contained in:
Shekar Siri 2021-12-06 18:53:52 +05:30 committed by GitHub
commit db248871f7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 9652 additions and 3732 deletions

View file

@ -36,23 +36,25 @@ def login():
tenant_id = r.pop("tenantId")
# change this in open-source
r["limits"] = {
"teamMember": int(environ.get("numberOfSeats", 0)),
"projects": -1,
"metadata": metadata.get_remaining_metadata_with_count(tenant_id)}
r = {**r,
"limits": {
"teamMember": int(environ.get("numberOfSeats", 0)),
"projects": -1,
"metadata": metadata.get_remaining_metadata_with_count(tenant_id)},
**license.get_status(tenant_id),
"smtp": environ["EMAIL_HOST"] is not None and len(environ["EMAIL_HOST"]) > 0,
"saml2": SAML2_helper.is_saml2_available(),
"iceServers": assist.get_ice_servers()
}
c = tenants.get_by_tenant_id(tenant_id)
c.pop("createdAt")
c["projects"] = projects.get_projects(tenant_id=tenant_id, recording_state=True, recorded=True,
stack_integrations=True, version=True)
c["smtp"] = helper.has_smtp()
c["iceServers"] = assist.get_ice_servers()
c = {**c, **license.get_status(tenant_id)}
return {
'jwt': r.pop('jwt'),
'data': {
"user": r,
"client": c,
"client": c
}
}

View file

@ -72,9 +72,15 @@ def process_sso_assertion():
role = roles.get_role_by_name(tenant_id=t['tenantId'], name=role_name)
if role is None:
return {"errors": [f"role {role_name} not found, please create it in openreplay first"]}
admin_privileges = user_data.get("adminPrivileges", [])
admin_privileges = not (len(admin_privileges) == 0
or admin_privileges[0] is None
or admin_privileges[0].lower() == "false")
if existing is None:
print("== new user ==")
users.create_sso_user(tenant_id=t['tenantId'], email=email, admin=True,
users.create_sso_user(tenant_id=t['tenantId'], email=email, admin=admin_privileges,
origin=SAML2_helper.get_saml2_provider(),
name=" ".join(user_data.get("firstName", []) + user_data.get("lastName", [])),
internal_id=internal_id, role_id=role["roleId"])

View file

@ -80,7 +80,7 @@ class Router extends React.Component {
super(props);
if (props.isLoggedIn) {
Promise.all([props.fetchUserInfo()])
.then(() => this.onLoginLogout());
// .then(() => this.onLoginLogout());
}
props.fetchTenants();
}

View file

@ -26,7 +26,6 @@ const ChatWindow: FC<Props> = function ChatWindow({ userId, incomeStream, localS
const iid = setInterval(() => {
const settings = incomeStream.getVideoTracks()[0]?.getSettings()
const isDummyVideoTrack = !!settings ? (settings.width === 2 || settings.frameRate === 0) : true
console.log(isDummyVideoTrack, settings)
const shouldBeEnabled = !isDummyVideoTrack
if (shouldBeEnabled !== localVideoEnabled) {
setRemoteVideoEnabled(shouldBeEnabled)

View file

@ -78,7 +78,7 @@ function LiveSessionList(props: Props) {
)
}
export default withPermissions(['ASSIST_LIVE'])(connect(
export default withPermissions(['ASSIST_LIVE', 'SESSION_REPLAY'])(connect(
(state) => ({
list: state.getIn(['sessions', 'liveSessions']),
loading: state.getIn([ 'sessions', 'loading' ]),

View file

@ -4,7 +4,7 @@ import { Loader, IconButton, Popup, NoContent, SlideModal } from 'UI'
import { connect } from 'react-redux'
import stl from './roles.css'
import RoleForm from './components/RoleForm'
import { init, edit, fetchList, remove as deleteRole } from 'Duck/roles';
import { init, edit, fetchList, remove as deleteRole, resetErrors } from 'Duck/roles';
import RoleItem from './components/RoleItem'
import { confirm } from 'UI/Confirmation';
import { toast } from 'react-toastify';
@ -19,7 +19,8 @@ interface Props {
fetchList: () => Promise<void>,
account: any,
permissionsMap: any,
removeErrors: any
removeErrors: any,
resetErrors: () => void
}
function Roles(props: Props) {
@ -37,6 +38,9 @@ function Roles(props: Props) {
toast.error(e)
})
}
return () => {
props.resetErrors()
}
}, [removeErrors])
const closeModal = () => {
@ -134,4 +138,4 @@ export default connect(state => {
loading: state.getIn(['roles', 'fetchRequest', 'loading']),
account: state.getIn([ 'user', 'account' ])
}
}, { init, edit, fetchList, deleteRole })(Roles)
}, { init, edit, fetchList, deleteRole, resetErrors })(Roles)

View file

@ -8,7 +8,7 @@ export default (requiredPermissions, className, backLink = '') => BaseComponent
}))
class extends React.PureComponent {
render() {
const hasPermission = this.props.permissions.some(permission => requiredPermissions.includes(permission));
const hasPermission = requiredPermissions.every(permission => this.props.permissions.includes(permission));
return !this.props.isEnterprise || hasPermission ? <BaseComponent {...this.props} /> : <div className={className}><NoPermission backLink={backLink} /></div>
}

View file

@ -10,7 +10,9 @@ export default function ChromePluginMessage({ style }) {
>
<div className="flex items-center">
<Icon name="info-circle" size="14" color="gray-darkest" />
<div className="ml-2 mr-2 color-gray-darkest">Finding it difficult to add steps? Try our Chrome <a className="color-teal" target="_blank" href={links['chrome-plugin']}>Test Recorder</a></div>
<div className="ml-2 mr-2 color-gray-darkest">
Finding it difficult to add steps? Try our Chrome <a className="color-teal" rel="noopener noreferrer" target="_blank" href={links['chrome-plugin']}>Test Recorder</a>
</div>
<Icon name="external-link-alt" size="14" color="teal" />
</div>
</div>

View file

@ -6,6 +6,8 @@ import { reduceDucks } from 'Duck/tools';
const crudDuck = crudDuckGenerator('client/role', Role, { idKey: 'roleId' });
export const { fetchList, init, edit, remove, } = crudDuck.actions;
const RESET_ERRORS = 'roles/RESET_ERRORS';
const initialState = Map({
list: List(),
permissions: List([
@ -19,6 +21,10 @@ const initialState = Map({
});
const reducer = (state = initialState, action = {}) => {
switch (action.type) {
case RESET_ERRORS:
return state.setIn(['removeRequest', 'errors'], null);
}
return state;
};
@ -29,4 +35,10 @@ export function save(instance) {
};
}
export function resetErrors() {
return {
type: RESET_ERRORS,
}
}
export default reduceDucks(crudDuck, { initialState, reducer }).reducer;

View file

@ -458,8 +458,8 @@ export default class AssistManager {
name: store.getState().getIn([ 'user', 'account', 'name']),
});
this.md.overlay.addEventListener("mousemove", this.onMouseMove)
this.md.overlay.addEventListener("click", this.onMouseClick)
// this.md.overlay.addEventListener("mousemove", this.onMouseMove)
// this.md.overlay.addEventListener("click", this.onMouseClick)
});
//call.peerConnection.addEventListener("track", e => console.log('newtrack',e.track))

View file

@ -21,7 +21,7 @@ const oss = {
MINIO_ACCESS_KEY: process.env.MINIO_ACCESS_KEY,
MINIO_SECRET_KEY: process.env.MINIO_SECRET_KEY,
ICE_SERVERS: process.env.ICE_SERVERS,
TRACKER_VERSION: '3.4.10', // trackerInfo.version,
TRACKER_VERSION: '3.4.11', // trackerInfo.version,
}
module.exports = {

13317
frontend/package-lock.json generated

File diff suppressed because it is too large Load diff