Emad Mostafaei | Javanrood | Kidnapped | Witness Report Incorporated {"@context":"https://schema.org","@type":"ProfilePage","@id":"https://witness.report/people/0c42cfa0-88f1-11f1-a740-560003f1f421/emad-mostafaei#profile","url":"https://witness.report/people/0c42cfa0-88f1-11f1-a740-560003f1f421/emad-mostafaei","name":"Emad Mostafaei | Javanrood | Kidnapped | Witness Report Incorporated","mainEntity":{"@type":"Person","@id":"https://witness.report/people/0c42cfa0-88f1-11f1-a740-560003f1f421/emad-mostafaei#person","name":"Emad Mostafaei","identifier":"0c42cfa0-88f1-11f1-a740-560003f1f421","url":"https://witness.report/people/0c42cfa0-88f1-11f1-a740-560003f1f421/emad-mostafaei","alternateName":"عماد مصطفایی","image":"https://witness.report/images/0c42cfa0-88f1-11f1-a740-560003f1f421.jpg","nationality":["Iranian"],"description":"Last status: Kidnapped | Health: Unknown | City: Javanrood"},"primaryImageOfPage":{"@type":"ImageObject","contentUrl":"https://witness.report/images/0c42cfa0-88f1-11f1-a740-560003f1f421.jpg","url":"https://witness.report/images/0c42cfa0-88f1-11f1-a740-560003f1f421.jpg"}} Home About Tags ShahedSang Iran Massacre 2026 Artist Athlete Blogger CaseNeedsUpdate ChainMurders Disability EnvironmentalActivist HealthcareStaff Journalist LabourActivist Lawyer NonPoliticalCase Photographer Poet PS752Justice ReligiousMinority Student Teacher TheGreenMovement Writer Browse in Advanced Search Get Involved Report New Case Membership Support Our Work Witness Report API News English Persian Advanced Search Search Logout 📞 +61485870004 📞 Call 💬 WhatsApp ✈️ Telegram (function() { const STORAGE_KEY = 'wr_google_id_token_v1'; const clientId = "196042580665-2576hlsgr5kr1qujskevu0ogjc99e0ug.apps.googleusercontent.com"; let googleIdentityPromise = null; window.wrLoadGoogleIdentity = function() { if (!clientId || (window.google && google.accounts && google.accounts.id)) { return Promise.resolve(); } if (googleIdentityPromise) return googleIdentityPromise; googleIdentityPromise = new Promise(function(resolve, reject) { const script = document.createElement('script'); script.src = 'https://accounts.google.com/gsi/client'; script.async = true; script.onload = resolve; script.onerror = reject; document.head.appendChild(script); }); return googleIdentityPromise; }; const loadGoogleOnInteraction = function() { window.wrLoadGoogleIdentity().catch(function() {}); }; document.addEventListener('pointerdown', loadGoogleOnInteraction, { once: true, passive: true }); document.addEventListener('keydown', loadGoogleOnInteraction, { once: true }); window.addEventListener('load', function() { setTimeout(loadGoogleOnInteraction, 1000); }, { once: true }); // Expose for other pages (people.php) to reuse init. window.wrGoogleStorageKey = STORAGE_KEY; const authSlot = document.getElementById('wrNavAuthSlot'); const loginEl = document.getElementById('wrNavGoogleSignIn'); const logoutBtn = document.getElementById('wrNavLogoutBtn'); if (!authSlot || !loginEl || !logoutBtn) return; function base64UrlDecodeToString(s) { try { const b64 = (s || '').replace(/-/g, '+').replace(/_/g, '/'); const padded = b64 + '==='.slice((b64.length + 3) % 4); return atob(padded); } catch (_) { return ''; } } function parseJwtPayload(token) { const parts = (token || '').split('.'); if (parts.length !== 3) return null; const json = base64UrlDecodeToString(parts[1]); if (!json) return null; try { return JSON.parse(json); } catch (_) { return null; } } function hasValidToken() { const token = (localStorage.getItem(STORAGE_KEY) || '').trim(); if (!token) return false; const payload = parseJwtPayload(token); const exp = payload && typeof payload.exp === 'number' ? payload.exp : 0; if (!exp) return false; return (Date.now() / 1000) < (exp - 30); } function setLoggedInUi(isLoggedIn) { if (!clientId) { authSlot.classList.add('d-none'); return; } authSlot.classList.remove('d-none'); logoutBtn.classList.toggle('d-none', !isLoggedIn); loginEl.classList.toggle('d-none', isLoggedIn); } window.wrHandleGoogleCredential = function(response) { const token = response && response.credential ? response.credential : ''; if (!token) return; try { localStorage.setItem(STORAGE_KEY, token); } catch (_) {} // Best-effort: notify server so we can keep an audit record of logins. // (Non-blocking; failures here should not break login UX.) try { fetch('/api/log_login.php', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' }, body: new URLSearchParams({ idToken: token }), credentials: 'same-origin', keepalive: true }).catch(function() {}); } catch (_) {} setLoggedInUi(true); try { window.dispatchEvent(new CustomEvent('wr-google-credential', { detail: { token } })); } catch (_) {} }; window.wrEnsureGoogleInit = function() { if (!clientId) return; if (window.wrGoogleInitDone) return; if (!window.google || !google.accounts || !google.accounts.id) return; google.accounts.id.initialize({ client_id: clientId, callback: window.wrHandleGoogleCredential, ux_mode: 'popup', itp_support: true }); window.wrGoogleInitDone = true; }; function initLoginButtonWhenReady() { const loggedIn = hasValidToken(); if (!loggedIn) { try { localStorage.removeItem(STORAGE_KEY); } catch (_) {} } if (!clientId) { setLoggedInUi(loggedIn); return; } if (!window.google || !google.accounts || !google.accounts.id) { setTimeout(initLoginButtonWhenReady, 50); return; } window.wrEnsureGoogleInit(); if (!loggedIn) { try { google.accounts.id.renderButton(loginEl, { theme: 'outline', size: 'medium' }); } catch (_) {} } setLoggedInUi(loggedIn); } logoutBtn.addEventListener('click', function() { try { localStorage.removeItem(STORAGE_KEY); } catch (_) {} setLoggedInUi(false); window.location.reload(); }); initLoginButtonWhenReady(); })(); Emad Mostafaei عماد مصطفایی Nationality : Iranian Age: 19 (2007) Status: Kidnapped Health: Unknown Share: X Telegram WhatsApp Bluesky | Contribute: Help Complete This Report UUID: 0c42cfa0-88f1-11f1-a740-560003f1f421 Short link: https://sml.yt/nx6u3 Copy (function() { const copyButton = document.querySelector('.wr-short-link__copy'); if (!copyButton) return; copyButton.addEventListener('click', async function() { const url = copyButton.getAttribute('data-copy-url') || ''; try { await navigator.clipboard.writeText(url); } catch (error) { const tempInput = document.createElement('textarea'); tempInput.value = url; tempInput.setAttribute('readonly', ''); tempInput.style.position = 'fixed'; tempInput.style.opacity = '0'; document.body.appendChild(tempInput); tempInput.select(); const copied = document.execCommand('copy'); tempInput.remove(); if (!copied) return; } const label = copyButton.querySelector('span'); if (label) { label.textContent = 'Copied'; window.setTimeout(function() { label.textContent = 'Copy'; }, 1500); } }); })(); Date: 2026-07-26 City: JavanroodProvince: KermanshahCountry: IranHealth Status: Unknown Status: KidnappedEmad Mostafaei, a Sunni religious activist from Javanrud, was arrested by intelligence agency forces and transferred to an unknown location. Emad Mostafaei, a Sunni religious activist from Javanrud, was arrested by intelligence agency forces and taken to an undisclosed location. Reports indicate that on 25 July 2026, intelligence forces raided Mostafaei's family home, arresting him and transferring him to an unknown location. It is reported that after his arrest, Mostafaei was taken to a security detention centre in the city of Kermanshah. As of the time of this report, there is no precise information available regarding the reason for his arrest, the charges against him, or his exact place of detention. Efforts by his family to obtain information have so far been unsuccessful. عماد مصطفایی، فعال مذهبی اهل سنت و اهل شهرستان جوانرود، توسط نیروهای اداره اطلاعات بازداشت و به مکان نامعلومی منتقل شد. بر اساس گزارش ها، در 3 مرداد 1405، نیروهای اداره اطلاعات با هجوم به منزل خانوادگی عماد مصطفایی، او را بازداشت و به مکان نامعلومی منتقل کردند. گزارش ها حاکی از آن است که عماد مصطفایی پس از بازداشت به یکی از بازداشتگاه های امنیتی در شهر کرمانشاه منتقل شده است. تا زمان تنظیم این گزارش، از علت بازداشت، اتهامات مطروحه و محل دقیق نگهداری این شهروند اطلاع دقیقی در دست نیست و پیگیری های خانواده وی تاکنون بی نتیجه مانده است. More people in Javanrood, Kidnapped Mobin Karimi مبین کریمی Parham Karimi پرهام کریمی Pouyan Ahmadi پویان احمدی Complete list ... Help Complete This Report with Your Input برای تکمیل این گزارش، اطلاعات خود را بنویسید. What should be corrected or added? چه چیزی باید اصلاح یا اضافه شود؟ Send updateارسال به‌روزرسانی To send a correction or message, please sign in with Google. No subscription is needed. برای ارسال اصلاحیه یا پیام، لطفاً با حساب گوگل وارد شوید. نیازی به اشتراک نیست. (function() { const clientId = "196042580665-2576hlsgr5kr1qujskevu0ogjc99e0ug.apps.googleusercontent.com"; const signInEl = document.getElementById('wrGoogleSignIn'); const formEl = document.getElementById('wrErrorReportForm'); const tokenEl = document.getElementById('wrGoogleIdToken'); const textareaEl = document.getElementById('wrReportText'); const submitBtn = document.getElementById('wrSubmitReportBtn'); const statusEl = document.getElementById('wrReportStatus'); const loginHintEl = document.getElementById('wrReportLoginHint'); if (!clientId || !signInEl || !formEl || !tokenEl) return; const STORAGE_KEY = (window.wrGoogleStorageKey || 'wr_google_id_token_v1'); function base64UrlDecodeToString(s) { try { const b64 = (s || '').replace(/-/g, '+').replace(/_/g, '/'); const padded = b64 + '==='.slice((b64.length + 3) % 4); const binary = atob(padded); // Convert binary -> UTF-8 const bytes = Uint8Array.from(binary, c => c.charCodeAt(0)); return new TextDecoder('utf-8', { fatal: false }).decode(bytes); } catch (_) { return ''; } } function parseJwtPayload(token) { const parts = (token || '').split('.'); if (parts.length !== 3) return null; const json = base64UrlDecodeToString(parts[1]); if (!json) return null; try { return JSON.parse(json); } catch (_) { return null; } } function getStoredValidToken() { const t = (localStorage.getItem(STORAGE_KEY) || '').trim(); if (!t) return ''; const payload = parseJwtPayload(t); const exp = payload && typeof payload.exp === 'number' ? payload.exp : 0; // Consider it expired 30s early to avoid edge cases. if (!exp || (Date.now() / 1000) >= (exp - 30)) return ''; return t; } function clearStoredToken() { try { localStorage.removeItem(STORAGE_KEY); } catch (_) {} } function setFormEnabled(enabled) { const on = !!enabled; if (textareaEl) textareaEl.disabled = !on; if (submitBtn) submitBtn.disabled = !on; } function showLoginPrompt() { setFormEnabled(false); tokenEl.value = ''; if (signInEl) signInEl.classList.remove('d-none'); if (loginHintEl) loginHintEl.classList.remove('d-none'); setStatus('', ''); } function showReportFormWithToken(token) { tokenEl.value = token; if (signInEl) signInEl.classList.add('d-none'); if (loginHintEl) loginHintEl.classList.add('d-none'); setFormEnabled(true); setStatus('', ''); } function setStatus(html, kind) { if (!statusEl) return; statusEl.className = kind ? ('alert alert-' + kind) : ''; statusEl.innerHTML = html || ''; } function initWhenReady() { // If we already have a valid token from a previous page, reuse it. const existing = getStoredValidToken(); if (existing) { showReportFormWithToken(existing); return; } else { clearStoredToken(); showLoginPrompt(); } // Initialize (once) via header helper, then render the button here. function renderWhenReady() { if (!window.google || !google.accounts || !google.accounts.id) { setTimeout(renderWhenReady, 50); return; } if (typeof window.wrEnsureGoogleInit === 'function') { try { window.wrEnsureGoogleInit(); } catch (_) {} } else { // Fallback if header isn't present for some reason. try { google.accounts.id.initialize({ client_id: clientId, callback: window.wrHandleGoogleCredential || function() {}, ux_mode: 'popup', itp_support: true }); } catch (_) {} } try { google.accounts.id.renderButton(signInEl, { theme: 'outline', size: 'large' }); } catch (_) {} } renderWhenReady(); } initWhenReady(); // If user logs in from the navbar, this page can react immediately. window.addEventListener('wr-google-credential', function(e) { const token = e && e.detail && e.detail.token ? String(e.detail.token) : ''; if (!token) return; showReportFormWithToken(token); if (textareaEl) textareaEl.focus(); }); formEl.addEventListener('submit', async function(e) { e.preventDefault(); setStatus('Sending…', 'info'); try { const formData = new FormData(formEl); const res = await fetch(formEl.action, { method: 'POST', body: formData, credentials: 'same-origin' }); const data = await res.json().catch(() => null); if (!res.ok || !data || !data.ok) { const msg = (data && data.error) ? data.error : 'Could not submit your report. Please try again later.'; setStatus(msg, 'warning'); // If auth failed (expired/invalid token), clear and show sign-in. const lower = (msg || '').toLowerCase(); if (lower.includes('token') || lower.includes('google') || res.status === 401 || res.status === 403) { clearStoredToken(); showLoginPrompt(); } return; } setStatus('Thank you. Your message was sent for review.', 'success'); if (textareaEl) textareaEl.value = ''; if (textareaEl) textareaEl.disabled = true; if (submitBtn) submitBtn.disabled = true; formEl.classList.add('d-none'); } catch (err) { setStatus('Network error. Please try again.', 'warning'); } }); })(); Once you submit your report, we carefully review and publish it as the latest verified update on the detainee's case, ensuring that their situation remains visible, documented, and accessible to the public. By keeping accurate and up to date information online, Witness Report helps prevent cases from being forgotten, strengthens public awareness, and reinforces accountability. This process offers reassurance that your loved one's story continues to be seen, acknowledged, and remembered. Media WR News X (Twitter) Instagram Telegram Channel Thank You Mardom Fundation EasyHostWay.AU The Joint Action Group Get Involved Report New Case Membership Support Our Work Witness Report API About Us Privacy Policy Recently Viewed © 2022-2026 Witness Report Incorporated. Established 2022. All rights reserved. (function() { const thankYouLinks = document.querySelectorAll('[data-thank-you-login-only]'); let isLoggedIn = false; try { const storageKey = window.wrGoogleStorageKey || 'wr_google_id_token_v1'; const token = (localStorage.getItem(storageKey) || '').trim(); const tokenParts = token.split('.'); if (tokenParts.length === 3) { const encodedPayload = tokenParts[1].replace(/-/g, '+').replace(/_/g, '/'); const paddedPayload = encodedPayload + '==='.slice((encodedPayload.length + 3) % 4); const payload = JSON.parse(atob(paddedPayload)); isLoggedIn = typeof payload.exp === 'number' && (Date.now() / 1000) < (payload.exp - 30); } } catch (error) { isLoggedIn = false; } if (isLoggedIn) { thankYouLinks.forEach(function(link) { link.classList.remove('d-none'); }); } const cookieName = 'wr_recent_profiles'; const recentSections = document.querySelectorAll('[data-recent-profiles]'); function readRecentProfiles() { const cookie = document.cookie.split('; ').find(function(item) { return item.indexOf(cookieName + '=') === 0; }); if (!cookie) return []; try { const profiles = JSON.parse(decodeURIComponent(cookie.substring(cookieName.length + 1))); if (!Array.isArray(profiles)) return []; return profiles.filter(function(profile) { if (!profile || typeof profile.name !== 'string' || typeof profile.path !== 'string') return false; try { const url = new URL(profile.path, window.location.origin); return url.origin === window.location.origin && url.pathname.indexOf('/people/') === 0; } catch (error) { return false; } }).slice(0, 5); } catch (error) { return []; } } const profiles = readRecentProfiles(); const currentProfile = document.getElementById('wrCurrentProfileVisit'); if (currentProfile) { const currentPath = currentProfile.dataset.profilePath || ''; const currentName = currentProfile.dataset.profileName || ''; if (currentPath && currentName) { const existingIndex = profiles.findIndex(function(profile) { return profile.path === currentPath; }); if (existingIndex !== -1) profiles.splice(existingIndex, 1); profiles.unshift({ name: currentName, path: currentPath }); profiles.splice(5); const cookieValue = encodeURIComponent(JSON.stringify(profiles)); document.cookie = cookieName + '=' + cookieValue + '; Path=/; Max-Age=7776000; SameSite=Lax' + (window.location.protocol === 'https:' ? '; Secure' : ''); } } recentSections.forEach(function(section) { const recentList = section.querySelector('[data-recent-profiles-list]'); if (!recentList) return; profiles.forEach(function(profile) { const item = document.createElement('li'); const link = document.createElement('a'); link.href = profile.path; link.textContent = profile.name; item.appendChild(link); recentList.appendChild(item); }); if (profiles.length) section.classList.remove('d-none'); }); })(); window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-L6GJNEC9YW'); // Prevent navbar from collapsing when dropdown is clicked document.addEventListener('DOMContentLoaded', function() { const dropdown = document.querySelector('.navbar .dropdown'); if (dropdown) { dropdown.addEventListener('click', function(e) { e.stopPropagation(); }); } }); if ('serviceWorker' in navigator) { window.addEventListener('load', function() { navigator.serviceWorker.register('/sw.js', { scope: '/' }).catch(function(err) { console.warn('Service worker registration failed:', err); }); }); }