CINXE.COM
Produtos de confiança e segurança/Contas temporárias/Para desenvolvedores - MediaWiki
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-disabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Produtos de confiança e segurança/Contas temporárias/Para desenvolvedores - MediaWiki</title> <script>(function(){var className="client-js vector-feature-language-in-header-disabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )mediawikiwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":[",\t."," \t,"],"wgDigitTransformTable":["",""], "wgDefaultDateFormat":"dmy","wgMonthNames":["","janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"wgRequestId":"0d617538-1307-4734-bec3-a53fc341d82c","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Trust_and_Safety_Product/Temporary_Accounts/For_developers/pt-br","wgTitle":"Trust and Safety Product/Temporary Accounts/For developers/pt-br","wgCurRevisionId":6864193,"wgRevisionId":6864193,"wgArticleId":2039904,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Temporary Accounts/pt-br"],"wgPageViewLanguage":"pt-br","wgPageContentLanguage":"pt-br","wgPageContentModel":"wikitext","wgRelevantPageName":"Trust_and_Safety_Product/Temporary_Accounts/For_developers/pt-br","wgRelevantArticleId":2039904,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[], "wgNoticeProject":"mediawiki","wgCiteReferencePreviewsActive":true,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgVisualEditor":{"pageLanguageCode":"pt-BR","pageLanguageDir":"ltr","pageVariantFallbacks":"pt-br"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":30000,"wgTranslatePageTranslation":"translation","wgCentralAuthMobileDomain":false,"wgVisualEditorDisabledByHook":true,"wgDiscussionToolsFeaturesEnabled":{"replytool":true,"newtopictool":true,"sourcemodetoolbar":true,"topicsubscription":false,"autotopicsub":false,"visualenhancements":false,"visualenhancements_reply":false,"visualenhancements_pageframe":false},"wgDiscussionToolsFallbackEditMode":"visual","wgULSPosition":"personal","wgULSisCompactLinksEnabled":true,"wgVector2022LanguageInHeader":false,"wgULSisLanguageSelectorEmpty":false,"wgCheckUserClientHintsHeadersJsApi":["brands","architecture", "bitness","fullVersionList","mobile","model","platform","platformVersion"]};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.translate.tag.languages":"ready","ext.pygments":"ready","ext.discussionTools.init.styles":"ready","oojs-ui-core.styles":"ready","oojs-ui.styles.indicators":"ready","mediawiki.widgets.styles":"ready","oojs-ui-core.icons":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.translate":"ready","ext.wikimediamessages.styles":"ready","ext.uls.pt":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.pygments.view","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.translate.pagetranslation.uls","ext.urlShortener.toolbar","ext.centralauth.centralautologin","ext.echo.centralauth", "ext.discussionTools.init","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.compactlinks","ext.uls.interface","ext.checkUser.clientHints"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.discussionTools.init.styles%7Cext.pygments%2Ctranslate%2CwikimediaBadges%7Cext.translate.tag.languages%7Cext.uls.pt%7Cext.wikimediamessages.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:site_name" content="MediaWiki"> <meta property="og:title" content="Produtos de confiança e segurança/Contas temporárias/Para desenvolvedores - MediaWiki"> <meta property="og:type" content="website"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//m.mediawiki.org/wiki/Trust_and_Safety_Product/Temporary_Accounts/For_developers/pt-br"> <link rel="alternate" type="application/x-wiki" title="Edit" href="/w/index.php?title=Trust_and_Safety_Product/Temporary_Accounts/For_developers/pt-br&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/mediawiki.png"> <link rel="icon" href="/static/favicon/mediawiki.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="MediaWiki (en)"> <link rel="EditURI" type="application/rsd+xml" href="//www.mediawiki.org/w/api.php?action=rsd"> <link rel="canonical" href="https://www.mediawiki.org/wiki/Trust_and_Safety_Product/Temporary_Accounts/For_developers/pt-br"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"> <link rel="alternate" type="application/atom+xml" title="MediaWiki Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="ext-discussiontools-replytool-enabled ext-discussiontools-newtopictool-enabled ext-discussiontools-sourcemodetoolbar-enabled skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Trust_and_Safety_Product_Temporary_Accounts_For_developers_pt-br rootpage-Trust_and_Safety_Product skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/MediaWiki" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-mw-download" class="mw-list-item"><a href="/wiki/Download"><span>Get MediaWiki</span></a></li><li id="n-mw-extensions" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Category:Extensions"><span>Get extensions</span></a></li><li id="n-blog-text" class="mw-list-item"><a href="https://techblog.wikimedia.org/"><span>Tech blog</span></a></li><li id="n-mw-contribute" class="mw-list-item"><a href="/wiki/Special:MyLanguage/How_to_contribute"><span>Contribute</span></a></li> </ul> </div> </div> <div id="p-support" class="vector-menu mw-portlet mw-portlet-support" > <div class="vector-menu-heading"> Support </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Help:Contents" title="The place to find out"><span>User help</span></a></li><li id="n-mw-faq" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Manual:FAQ"><span>FAQ</span></a></li><li id="n-mw-manual" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Manual:Contents"><span>Technical manual</span></a></li><li id="n-mw-supportdesk" class="mw-list-item"><a href="/wiki/Project:Support_desk"><span>Support desk</span></a></li><li id="n-mw-communication" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Communication"><span>Communication</span></a></li> </ul> </div> </div> <div id="p-development" class="vector-menu mw-portlet mw-portlet-development" > <div class="vector-menu-heading"> Development </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mw-developerportal" class="mw-list-item"><a href="https://developer.wikimedia.org/"><span>Developer portal</span></a></li><li id="n-svn-statistics" class="mw-list-item"><a href="/wiki/Development_statistics"><span>Code statistics</span></a></li> </ul> </div> </div> <div id="p-mediawiki.org" class="vector-menu mw-portlet mw-portlet-mediawiki_org" > <div class="vector-menu-heading"> mediawiki.org </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-portal" class="mw-list-item"><a href="/wiki/Project:Help" title="About the project, what you can do, where to find things"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes in the wiki [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-mw-translate" class="mw-list-item"><a href="/wiki/Special:LanguageStats"><span>Translate content</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Load a random page [x]" accesskey="x"><span>Random page</span></a></li><li id="n-mw-discussion" class="mw-list-item"><a href="/wiki/Project:Village_Pump"><span>Village pump</span></a></li><li id="n-Sandboxlink-portlet-label" class="mw-list-item"><a href="/wiki/Project:Sandbox"><span>Sandbox</span></a></li> </ul> </div> </div> <div id="p-lang" class="vector-menu mw-portlet mw-portlet-lang" > <div class="vector-menu-heading"> In other languages </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-add wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:NewItem?site=mediawikiwiki&page=Trust+and+Safety+Product%2FTemporary+Accounts%2FFor+developers%2Fpt-br" title="Add interlanguage links" class="wbc-editpage">Add links</a></span></div> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/MediaWiki" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/mediawikiwiki.svg" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="MediaWiki" src="/static/images/mobile/copyright/mediawikiwiki-wordmark.svg" style="width: 7.5em; height: 1.125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search MediaWiki [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search MediaWiki" aria-label="Search MediaWiki" autocapitalize="sentences" title="Search MediaWiki [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-uls" class="mw-list-item active user-links-collapsible-item"><a data-mw="interface" href="#" class="uls-trigger cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet"><span class="vector-icon mw-ui-icon-wikimedia-language mw-ui-icon-wikimedia-wikimedia-language"></span> <span>English</span></a> </li> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page's font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/?utm_source=donate&utm_medium=sidebar&utm_campaign=spontaneous&uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&returnto=Trust+and+Safety+Product%2FTemporary+Accounts%2FFor+developers%2Fpt-br" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&returnto=Trust+and+Safety+Product%2FTemporary+Accounts%2FFor+developers%2Fpt-br" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="More options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/?utm_source=donate&utm_medium=sidebar&utm_campaign=spontaneous&uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&returnto=Trust+and+Safety+Product%2FTemporary+Accounts%2FFor+developers%2Fpt-br" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&returnto=Trust+and+Safety+Product%2FTemporary+Accounts%2FFor+developers%2Fpt-br" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">Beginning</div> </a> </li> <li id="toc-Crie_contas_temporários_para_seus_recursos" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Crie_contas_temporários_para_seus_recursos"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Crie contas temporários para seus recursos</span> </div> </a> <ul id="toc-Crie_contas_temporários_para_seus_recursos-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Diretrizes_de_design_desta_mudança" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Diretrizes_de_design_desta_mudança"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Diretrizes de design desta mudança</span> </div> </a> <ul id="toc-Diretrizes_de_design_desta_mudança-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Como_atualizar_o_código?" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Como_atualizar_o_código?"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Como atualizar o código?</span> </div> </a> <button aria-controls="toc-Como_atualizar_o_código?-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Como atualizar o código? subsection</span> </button> <ul id="toc-Como_atualizar_o_código?-sublist" class="vector-toc-list"> <li id="toc-Perguntas_frequentes" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Perguntas_frequentes"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1</span> <span>Perguntas frequentes</span> </div> </a> <ul id="toc-Perguntas_frequentes-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Update_a_check_for_the_type_of_user" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Update_a_check_for_the_type_of_user"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2</span> <span>Update a check for the type of user</span> </div> </a> <ul id="toc-Update_a_check_for_the_type_of_user-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Anonymous,_Not_logged-in,_Unregistered,_Unnamed?_A_word_on_terminology" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Anonymous,_Not_logged-in,_Unregistered,_Unnamed?_A_word_on_terminology"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.3</span> <span>Anonymous, Not logged-in, Unregistered, Unnamed? A word on terminology</span> </div> </a> <ul id="toc-Anonymous,_Not_logged-in,_Unregistered,_Unnamed?_A_word_on_terminology-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Creating_a_new_temporary_user" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Creating_a_new_temporary_user"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.4</span> <span>Creating a new temporary user</span> </div> </a> <ul id="toc-Creating_a_new_temporary_user-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Testing_the_onTempUserCreatedRedirect_hook" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Testing_the_onTempUserCreatedRedirect_hook"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.5</span> <span>Testing the onTempUserCreatedRedirect hook</span> </div> </a> <ul id="toc-Testing_the_onTempUserCreatedRedirect_hook-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Updating_AbuseFilter_filters" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Updating_AbuseFilter_filters"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.6</span> <span>Updating AbuseFilter filters</span> </div> </a> <ul id="toc-Updating_AbuseFilter_filters-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Updating_AbuseFilter_permissions" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Updating_AbuseFilter_permissions"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.7</span> <span>Updating AbuseFilter permissions</span> </div> </a> <ul id="toc-Updating_AbuseFilter_permissions-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Update_documentation" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Update_documentation"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.8</span> <span>Update documentation</span> </div> </a> <ul id="toc-Update_documentation-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-FAQ_for_developers" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#FAQ_for_developers"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>FAQ for developers</span> </div> </a> <button aria-controls="toc-FAQ_for_developers-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle FAQ for developers subsection</span> </button> <ul id="toc-FAQ_for_developers-sublist" class="vector-toc-list"> <li id="toc-What's_the_change_from_a_technical_perspective?" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#What's_the_change_from_a_technical_perspective?"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.1</span> <span>What's the change from a technical perspective?</span> </div> </a> <ul id="toc-What's_the_change_from_a_technical_perspective?-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-How_can_my_code_check_if_temp_accounts_is_enabled?" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#How_can_my_code_check_if_temp_accounts_is_enabled?"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.2</span> <span>How can my code check if temp accounts is enabled?</span> </div> </a> <ul id="toc-How_can_my_code_check_if_temp_accounts_is_enabled?-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Should_my_tool_treat_temp_accounts_the_same_as_regular_accounts?" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Should_my_tool_treat_temp_accounts_the_same_as_regular_accounts?"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.3</span> <span>Should my tool treat temp accounts the same as regular accounts?</span> </div> </a> <ul id="toc-Should_my_tool_treat_temp_accounts_the_same_as_regular_accounts?-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Why_are_temporary_accounts_implemented_so_similarly_to_named_user_accounts,_if_the_users_themselves_are_more_similar_to_anonymous_users?" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Why_are_temporary_accounts_implemented_so_similarly_to_named_user_accounts,_if_the_users_themselves_are_more_similar_to_anonymous_users?"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.4</span> <span>Why are temporary accounts implemented so similarly to named user accounts, if the users themselves are more similar to anonymous users?</span> </div> </a> <ul id="toc-Why_are_temporary_accounts_implemented_so_similarly_to_named_user_accounts,_if_the_users_themselves_are_more_similar_to_anonymous_users?-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Why_does_User::isRegistered_return_true_instead_of_false_for_a_temporary_account?_Shouldn’t_temporary_users_mostly_be_treated_like_anonymous_users?" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Why_does_User::isRegistered_return_true_instead_of_false_for_a_temporary_account?_Shouldn’t_temporary_users_mostly_be_treated_like_anonymous_users?"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.5</span> <span>Why does User::isRegistered return true instead of false for a temporary account? Shouldn’t temporary users mostly be treated like anonymous users?</span> </div> </a> <ul id="toc-Why_does_User::isRegistered_return_true_instead_of_false_for_a_temporary_account?_Shouldn’t_temporary_users_mostly_be_treated_like_anonymous_users?-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Can_our_database_handle_the_increased_number_of_new_accounts_created?" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Can_our_database_handle_the_increased_number_of_new_accounts_created?"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.6</span> <span>Can our database handle the increased number of new accounts created?</span> </div> </a> <ul id="toc-Can_our_database_handle_the_increased_number_of_new_accounts_created?-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-What_will_be_stored_in_the_database_instead_of_the_IP_address?" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#What_will_be_stored_in_the_database_instead_of_the_IP_address?"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.7</span> <span>What will be stored in the database instead of the IP address?</span> </div> </a> <ul id="toc-What_will_be_stored_in_the_database_instead_of_the_IP_address?-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Where_in_the_database_will_IP_addresses_be_stored?" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Where_in_the_database_will_IP_addresses_be_stored?"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.8</span> <span>Where in the database will IP addresses be stored?</span> </div> </a> <ul id="toc-Where_in_the_database_will_IP_addresses_be_stored?-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Will_old_IP_addresses_be_hidden?_Where_IP_addresses_are_already_stored_in_the_database,_will_they_be_removed?_Will_it_be_possible_to_instantiate_a_`User`_object_with_an_IP_address_as_its_name?" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Will_old_IP_addresses_be_hidden?_Where_IP_addresses_are_already_stored_in_the_database,_will_they_be_removed?_Will_it_be_possible_to_instantiate_a_`User`_object_with_an_IP_address_as_its_name?"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.9</span> <span>Will old IP addresses be hidden? Where IP addresses are already stored in the database, will they be removed? Will it be possible to instantiate a `User` object with an IP address as its name?</span> </div> </a> <ul id="toc-Will_old_IP_addresses_be_hidden?_Where_IP_addresses_are_already_stored_in_the_database,_will_they_be_removed?_Will_it_be_possible_to_instantiate_a_`User`_object_with_an_IP_address_as_its_name?-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Will_this_increase_the_amount_of_traffic_bypassing_the_Varnish_cache?" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Will_this_increase_the_amount_of_traffic_bypassing_the_Varnish_cache?"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.10</span> <span>Will this increase the amount of traffic bypassing the Varnish cache?</span> </div> </a> <ul id="toc-Will_this_increase_the_amount_of_traffic_bypassing_the_Varnish_cache?-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-What_is_mw.config.get('wgUserName')_for_a_temporary_user?" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#What_is_mw.config.get('wgUserName')_for_a_temporary_user?"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.11</span> <span>What is mw.config.get('wgUserName') for a temporary user?</span> </div> </a> <ul id="toc-What_is_mw.config.get('wgUserName')_for_a_temporary_user?-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-What_is_mw.config.get('wgUserGroups')_for_a_temporary_user?" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#What_is_mw.config.get('wgUserGroups')_for_a_temporary_user?"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.12</span> <span>What is mw.config.get('wgUserGroups') for a temporary user?</span> </div> </a> <ul id="toc-What_is_mw.config.get('wgUserGroups')_for_a_temporary_user?-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Can_temporary_users_be_assigned_to_groups,_autopromoted_or_autoconfirmed?" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Can_temporary_users_be_assigned_to_groups,_autopromoted_or_autoconfirmed?"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.13</span> <span>Can temporary users be assigned to groups, autopromoted or autoconfirmed?</span> </div> </a> <ul id="toc-Can_temporary_users_be_assigned_to_groups,_autopromoted_or_autoconfirmed?-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-I'm_a_developer_for_a_tool_or_third-party_MediaWiki_extension._How_do_I_let_the_WMF_know_about_my_needs?" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#I'm_a_developer_for_a_tool_or_third-party_MediaWiki_extension._How_do_I_let_the_WMF_know_about_my_needs?"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.14</span> <span>I'm a developer for a tool or third-party MediaWiki extension. How do I let the WMF know about my needs?</span> </div> </a> <ul id="toc-I'm_a_developer_for_a_tool_or_third-party_MediaWiki_extension._How_do_I_let_the_WMF_know_about_my_needs?-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-PHPUnit_tests_for_my_extension_break_with_temp_accounts_enabled" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#PHPUnit_tests_for_my_extension_break_with_temp_accounts_enabled"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.15</span> <span>PHPUnit tests for my extension break with temp accounts enabled</span> </div> </a> <ul id="toc-PHPUnit_tests_for_my_extension_break_with_temp_accounts_enabled-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-I_have_questions_not_answered_on_this_page" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#I_have_questions_not_answered_on_this_page"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.16</span> <span>I have questions not answered on this page</span> </div> </a> <ul id="toc-I_have_questions_not_answered_on_this_page-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading">Produtos de confiança e segurança/Contas temporárias/Para desenvolvedores</h1> <div class="mw-indicators"> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Trust_and_Safety_Product/Temporary_Accounts/For_developers/pt-br" title="View the content page [c]" accesskey="c"><span>Page</span></a></li><li id="ca-talk" class="new vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Talk:Trust_and_Safety_Product/Temporary_Accounts/For_developers/pt-br&action=edit&redlink=1" rel="discussion" class="new" title="Discussion about the content page (page does not exist) [t]" accesskey="t"><span>Discussion</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">português do Brasil</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Trust_and_Safety_Product/Temporary_Accounts/For_developers/pt-br"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Special:Translate&group=page-Trust+and+Safety+Product%2FTemporary+Accounts%2FFor+developers&action=page&filter=&language=pt-br" title="Edit this page [e]" accesskey="e"><span>Translate</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Trust_and_Safety_Product/Temporary_Accounts/For_developers/pt-br&action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Trust_and_Safety_Product/Temporary_Accounts/For_developers/pt-br"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:Translate&group=page-Trust+and+Safety+Product%2FTemporary+Accounts%2FFor+developers&action=page&filter=&language=pt-br" title="Edit this page [e]" accesskey="e"><span>Translate</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Trust_and_Safety_Product/Temporary_Accounts/For_developers/pt-br&action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Trust_and_Safety_Product/Temporary_Accounts/For_developers/pt-br" title="A list of all wiki pages that link here [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Trust_and_Safety_Product/Temporary_Accounts/For_developers/pt-br" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="//commons.wikimedia.org/wiki/Special:UploadWizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Trust_and_Safety_Product/Temporary_Accounts/For_developers/pt-br&oldid=6864193" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Trust_and_Safety_Product/Temporary_Accounts/For_developers/pt-br&action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&page=Trust_and_Safety_Product%2FTemporary_Accounts%2FFor_developers%2Fpt-br&id=6864193&wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fwww.mediawiki.org%2Fwiki%2FTrust_and_Safety_Product%2FTemporary_Accounts%2FFor_developers%2Fpt-br"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fwww.mediawiki.org%2Fwiki%2FTrust_and_Safety_Product%2FTemporary_Accounts%2FFor_developers%2Fpt-br"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-create_a_book" class="mw-list-item"><a href="/w/index.php?title=Special:Book&bookcmd=book_creator&referer=Trust+and+Safety+Product%2FTemporary+Accounts%2FFor+developers%2Fpt-br"><span>Create a book</span></a></li><li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&page=Trust_and_Safety_Product%2FTemporary_Accounts%2FFor_developers%2Fpt-br&action=show-download-screen"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Trust_and_Safety_Product/Temporary_Accounts/For_developers/pt-br&printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects emptyPortlet" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div id="siteSub" class="noprint">From mediawiki.org</div> </div> <div id="contentSub"><div id="mw-content-subtitle"><div class="subpages">< <bdi dir="ltr"><a href="/wiki/Special:MyLanguage/Trust_and_Safety_Product" title="Special:MyLanguage/Trust and Safety Product">Trust and Safety Product</a></bdi> | <bdi dir="ltr"><a href="/wiki/Special:MyLanguage/Trust_and_Safety_Product/Temporary_Accounts" title="Special:MyLanguage/Trust and Safety Product/Temporary Accounts">Temporary Accounts</a></bdi></div></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-pt-translate-header noprint" dir="ltr" lang="en">This page is a <span class="plainlinks"><a class="external text" href="https://www.mediawiki.org/w/index.php?title=Special:Translate&group=page-Trust+and+Safety+Product%2FTemporary+Accounts%2FFor+developers&action=page&filter=&language=pt-br">translated version</a></span> of the page <a href="/wiki/Trust_and_Safety_Product/Temporary_Accounts/For_developers" title="Trust and Safety Product/Temporary Accounts/For developers">Trust and Safety Product/Temporary Accounts/For developers</a> and the translation is 14% complete.</div><div class="mw-content-ltr mw-parser-output" lang="pt-BR" dir="ltr"><div class="mw-pt-languages noprint navigation-not-searchable" lang="en" dir="ltr"><div class="mw-pt-languages-label">Languages:</div><ul class="mw-pt-languages-list"><li><a href="/wiki/Trust_and_Safety_Product/Temporary_Accounts/For_developers/id" class="mw-pt-progress mw-pt-progress--low" title="Produk Kepercayaan dan Keamanan/Akun Sementara/Untuk pengembang (1% translated)" lang="id" dir="ltr">Bahasa Indonesia</a></li> <li><a href="/wiki/Trust_and_Safety_Product/Temporary_Accounts/For_developers" class="mw-pt-languages-ui mw-pt-progress mw-pt-progress--complete" title="Trust and Safety Product/Temporary Accounts/For developers (100% translated)" lang="en" dir="ltr">English</a></li> <li><a href="/wiki/Trust_and_Safety_Product/Temporary_Accounts/For_developers/fr" class="mw-pt-progress mw-pt-progress--low" title="Produit de confiance et de sécurité/Comptes temporaires/Développeurs (2% translated)" lang="fr" dir="ltr">français</a></li> <li><span class="mw-pt-languages-selected mw-pt-progress mw-pt-progress--low" lang="pt-BR" dir="ltr">português do Brasil</span></li> <li><a href="/wiki/Trust_and_Safety_Product/Temporary_Accounts/For_developers/zh" class="mw-pt-progress mw-pt-progress--med" title="信任與安全產品/臨時帳號/進展更新/給開發者 (26% translated)" lang="zh" dir="ltr">中文</a></li> <li><a href="/wiki/Trust_and_Safety_Product/Temporary_Accounts/For_developers/ja" class="mw-pt-progress mw-pt-progress--low" title="信頼と安全製品/臨時アカウント/開発者向け (2% translated)" lang="ja" dir="ltr">日本語</a></li></ul></div> <div class="ipm plainlinks" lang="pt-BR" dir="ltr"> <style data-mw-deduplicate="TemplateStyles:r6778971">.mw-parser-output .ipm{margin:1em 0;box-sizing:border-box;clear:both;background:#fff}.mw-parser-output .ipm-tabs{display:flex;flex-direction:column;flex-wrap:wrap;text-align:center}.mw-parser-output .ipm-tab{flex:1 1 0;width:100%;margin:0;box-sizing:border-box;background-color:inherit;padding:.8em;font-weight:bold;border-top:0.2em solid #f8f9fa}.mw-parser-output .ipm-tab.selected{background-color:#f8f9fa;border-left:0.5em solid #36c}.mw-parser-output .ipm-tab img{min-width:22px}.mw-parser-output .ipm-content{font-size:1.1em;border-bottom:2px solid #36c;padding:1em}.mw-parser-output .ipm-break{clear:both}@media(min-width:550px){.mw-parser-output .ipm-tabs{flex-direction:row;padding:0;margin-top:0!important}.mw-parser-output .ipm-tabs>.ipm-tab{display:inline-block;vertical-align:bottom;white-space:nowrap;width:auto;margin:0 .2em 0 0;border-top:.5em solid #36c;font-size:1.3em}.mw-parser-output .ipm-tab.selected{border-left:0}}@media(min-width:1000px){.mw-parser-output .ipm-tabs>.ipm-tab{flex:0 1 0}}@media screen{html.skin-theme-clientpref-night .mw-parser-output .ipm{background-color:transparent}html.skin-theme-clientpref-night .mw-parser-output .ipm-tabs>.ipm-tab.selected{background-color:transparent;border-top-color:#AFB6E9}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .ipm-tabs>.ipm-tab.selected{background-color:transparent;border-top-color:#AFB6E9}html.skin-theme-clientpref-os .mw-parser-output .ipm{background-color:transparent}}</style> <div class="ipm-tabs" role="navigation"> <div class="ipm-tab selected"><a href="/wiki/Special:MyLanguage/Trust_and_Safety_Product/Temporary_Accounts" title="Special:MyLanguage/Trust and Safety Product/Temporary Accounts">Sobre edição IP</a><span style="display:none"><a href="/wiki/Trust_and_Safety_Product/Temporary_Accounts" title="Trust and Safety Product/Temporary Accounts"> </a></span></div> <div class="ipm-tab"><a href="/wiki/Special:MyLanguage/Trust_and_Safety_Product/Temporary_Accounts/Updates" title="Special:MyLanguage/Trust and Safety Product/Temporary Accounts/Updates"><span lang="en" dir="ltr" class="mw-content-ltr">Updates</span></a><span style="display:none"><a href="/wiki/Trust_and_Safety_Product/Temporary_Accounts/Updates" title="Trust and Safety Product/Temporary Accounts/Updates"> </a></span></div> <div class="ipm-tab"><a href="/wiki/Special:MyLanguage/Trust_and_Safety_Product/Temporary_Accounts/Updates/Legal" title="Special:MyLanguage/Trust and Safety Product/Temporary Accounts/Updates/Legal"><span lang="en" dir="ltr" class="mw-content-ltr">Legal</span></a></div> <div class="ipm-tab"><a href="/wiki/Special:MyLanguage/Trust_and_Safety_Product/Temporary_Accounts/FAQ" title="Special:MyLanguage/Trust and Safety Product/Temporary Accounts/FAQ"><span lang="en" dir="ltr" class="mw-content-ltr">FAQ</span></a><span style="display:none"><a href="/wiki/Trust_and_Safety_Product/Temporary_Accounts/FAQ" title="Trust and Safety Product/Temporary Accounts/FAQ"> </a></span></div> </div> <div class="ipm-break"></div> </div> <p>Esta página descreve alguns dos aspectos técnicos de <a href="/wiki/Special:MyLanguage/Trust_and_Safety_Product/Temporary_Accounts" title="Special:MyLanguage/Trust and Safety Product/Temporary Accounts">contas Temporárias</a><span style="display:none"><a href="/wiki/Trust_and_Safety_Product/Temporary_Accounts" title="Trust and Safety Product/Temporary Accounts"> </a></span>. Pode ser útil para pessoas que estão atualizando <a href="/wiki/Special:MyLanguage/Manual:Interface/JavaScript#Personal_scripts" title="Special:MyLanguage/Manual:Interface/JavaScript">scripts de usuário</a>, <a href="/wiki/Special:MyLanguage/Manual:Bots" title="Special:MyLanguage/Manual:Bots">bots</a> e outras <a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/Tools" class="extiw" title="m:Special:MyLanguage/Tools">ferramentas</a>. </p><p><span id="Create_temporary_actor_for_your_features"></span> </p> <meta property="mw:PageProp/toc"/> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Crie_contas_temporários_para_seus_recursos" data-mw-thread-id="h-Crie_contas_temporários_para_seus_recursos"><span id="Crie_contas_tempor.C3.A1rios_para_seus_recursos"></span><span data-mw-comment-start="" id="h-Crie_contas_temporários_para_seus_recursos"></span>Crie contas temporários para seus recursos<span data-mw-comment-end="h-Crie_contas_temporários_para_seus_recursos"></span></h2><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Crie_contas_tempor\u00e1rios_para_seus_recursos","replies":[]}}--></div> <p>As características que você mantém precisam ser atualizadas para a introdução de contas temporárias, caso eles criem atores de IP. Eles fazem se: </p> <ul><li>Qualquer fluxo de trabalho que leve a uma entrada de log no wiki incluindo o artista, onde o artista pode atualmente ser um usuário cujo nome é seu IP, cria um ator de IP.</li> <li>De forma mais geral, qualquer fluxo de trabalho que (1) adicione outra linha à tabela <code><a href="/wiki/Special:MyLanguage/Manual:Actor_table" title="Special:MyLanguage/Manual:Actor table">actor</a><span style="display:none"><a href="/wiki/Manual:Actor_table" title="Manual:Actor table"> </a></span></code> e (2) possa ser executado por um usuário desconectado (também conhecido como usuário anon, usuário IP), criando um ator IP.</li></ul> <dl><dt>Por que preciso fazer isso?</dt></dl> <ul><li>Depois que as contas temporárias estiverem habilitadas, não queremos criar nenhum ator que tenha o endereço IP como nome.</li> <li>Grande parte do trabalho que foi feito até agora se concentrou na edição (particularmente via <code>EditPage</code>, seja via <code>action=edit</code>, <code>ApiEditPage</code>, <code>ApiVisualEditorEdit</code>, etc). Se um usuário desconectado editar por esses meios, uma conta temporária será criada para ele.</li> <li>No entanto, os atores podem ser criados através de outros fluxos de trabalho (por exemplo, editando dados estruturados como um usuário desconectado). Até que esses fluxos de trabalho sejam atualizados, o MediaWiki continuará salvando usuários cujo nome seja seu endereço IP.</li></ul> <p>Para obter instruções detalhadas sobre o que fazer, consulte as seções abaixo. </p><p><span id="Design_guidelines_around_this_change"></span> </p> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Diretrizes_de_design_desta_mudança" data-mw-thread-id="h-Diretrizes_de_design_desta_mudança"><span id="Diretrizes_de_design_desta_mudan.C3.A7a"></span><span data-mw-comment-start="" id="h-Diretrizes_de_design_desta_mudança"></span>Diretrizes de design desta mudança<span data-mw-comment-end="h-Diretrizes_de_design_desta_mudança"></span></h2><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Diretrizes_de_design_desta_mudan\u00e7a","replies":[]}}--></div> <ul><li><b>Paridade com direitos de editor de IP</b>, inicialmente. Inicialmente, a experiência de conta temporária deveria pelo menos ter paridade com a experiência de IP herdada em termos de quais recursos estão disponíveis para tais editores. Embora a arquitectura de contas temporárias proporcione oportunidades para proporcionar experiências mais ricas e persistentes às pessoas desconectadas, estas oportunidades devem ser adiadas até depois do lançamento inicial, para que as comunidades tenham o mínimo de mudanças possível durante esta grande mudança.</li> <li><b>Contas temporárias são efêmeras.</b> As pessoas não devem pensar que têm uma conta quando não a têm, e há espaço para a educação incluir o destaque dos incentivos à criação de uma conta em vez de permanecer desconectado (semelhante aos avisos que aparecem para os editores de IP).</li> <li><b> Clareza de que qualquer pessoa pode editar.</b> Da mesma forma, também deve ficar claro para a pessoa com uma conta temporária que ainda não é necessário que ela crie uma conta para continuar editando. Manter um dos <a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/Founding_principles" class="extiw" title="m:Special:MyLanguage/Founding principles">Princípios fundadores dos projetos da Wikimedia</a>.</li> <li><b>Orientação e educação incorporadas na nova experiência.</b> <ul><li>As pessoas não devem ficar confusas ou confusas quando a conta desaparece.</li> <li>As pessoas não devem perceber que a sua privacidade é reduzida com uma conta temporária em comparação com uma edição de IP. Pelo contrário, considere oportunidades para destacar que a privacidade é melhorada como um editor de conta temporário em comparação com uma edição de IP, uma vez que o endereço IP não será mais mostrado, exceto para usuários privilegiados.</li></ul></li></ul> <p><span id="How_should_I_update_my_code?"></span> </p> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Como_atualizar_o_código?" data-mw-thread-id="h-Como_atualizar_o_código?"><span id="Como_atualizar_o_c.C3.B3digo.3F"></span><span data-mw-comment-start="" id="h-Como_atualizar_o_código?"></span>Como atualizar o código?<span data-mw-comment-end="h-Como_atualizar_o_código?"></span></h2><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Como_atualizar_o_c\u00f3digo?","replies":["h-Perguntas_frequentes-Como_atualizar_o_c\u00f3digo?","h-Update_a_check_for_the_type_of_user-Como_atualizar_o_c\u00f3digo?","h-Anonymous,_Not_logged-in,_Unregistered,_Unnamed?_A_word_on_terminology-Como_atualizar_o_c\u00f3digo?","h-Creating_a_new_temporary_user-Como_atualizar_o_c\u00f3digo?","h-Testing_the_onTempUserCreatedRedirect_hook-Como_atualizar_o_c\u00f3digo?","h-Updating_AbuseFilter_filters-Como_atualizar_o_c\u00f3digo?","h-Updating_AbuseFilter_permissions-Como_atualizar_o_c\u00f3digo?","h-Update_documentation-Como_atualizar_o_c\u00f3digo?"]}}--></div> <p><span id="Questions_you_may_ask_yourself"></span> </p> <div class="mw-heading mw-heading3"><h3 id="Perguntas_frequentes" data-mw-thread-id="h-Perguntas_frequentes-Como_atualizar_o_código?"><span data-mw-comment-start="" id="h-Perguntas_frequentes-Como_atualizar_o_código?"></span>Perguntas frequentes<span data-mw-comment-end="h-Perguntas_frequentes-Como_atualizar_o_código?"></span></h3></div> <p><span lang="en" dir="ltr" class="mw-content-ltr">There is no single, simple answer to this question.</span> As contas temporárias são uma nova forma de representar enormes editores anônimos, o que pode ter impacto em algumas partes do software, mas quase não faz diferença em outras. <span lang="en" dir="ltr" class="mw-content-ltr">Solutions might involve a lot of product research, but a straightforward technical fix.</span> <span lang="en" dir="ltr" class="mw-content-ltr">Or a technical fix might be complicated and require domain expertise and judgment.</span> </p><p>Examples of ways code might be affected and how to consider fixing it (disclaimer: this is not exhaustive): </p> <ul><li>A feature is unavailable to anonymous users. Should it be available to temporary users?</li> <li>A feature works differently for anonymous vs registered users. How should it work for temporary users?</li> <li>A feature assumes anonymous users are less trustworthy, and registered users are trustworthy. How should it treat temporary users?</li> <li>A feature displays different UI messages for anonymous vs registered users. What should it display for temporary users?</li> <li>A feature assumes registered users have preferences. It now needs to check for named users instead, since temporary users don’t have preferences.</li> <li>A feature assumes registered users have a watchlist. It now needs to check for named users instead, since temporary users don’t have a watchlist.</li> <li>A feature assumes registered users have rights. However, temp users will have no more rights than anonymous users (see <a href="/wiki/Special:ListGroupRights" title="Special:ListGroupRights">Special:ListGroupRights</a>), so code should be updated accordingly.</li> <li>A feature looks for the IP address in the user name (it will no longer be found). If the feature doesn’t leak the IP address (or related information, e.g. geolocation data), look in the request data instead using <code>$request->getIP()</code>. Otherwise, the feature should be discontinued or only available to checkusers, admins and users in a new “temporary account viewer” group.</li> <li>Statistics are gathered separately for anonymous and registered users. How should temporary users be bucketed?</li> <li>A user is flagged as anonymous or registered (e.g. in logs or API results). How should temporary users be flagged? What would features checking these flags like to know? Note that in most APIs, temporary users are flagged separately from IP users: (<a href="https://phabricator.wikimedia.org/T341228" class="extiw" title="phab:T341228">T341228</a>).</li> <li>Some feature or part of the infrastructure assumes that the <code>user</code> table will keep growing at its current rate. This assumption won’t hold after temporary accounts are enabled: the <code>user</code> table will grow more quickly.</li> <li>Some feature or part of the infrastructure assumes that the ratio of registered to anonymous users accessing Wikimedia sites will stay roughly the same. This assumption won’t hold anywhere that temporary users are treated as registered users.</li> <li>A feature that relies on looking at the user’s ID to identify if the user is registered or unregistered. Temporary accounts will not have a <code>user_id</code> of 0. An example of this might be instrumentation.</li></ul> <p>We are doing an audit of features that might be affected (<a href="https://phabricator.wikimedia.org/T349219" class="extiw" title="phab:T349219">T349219</a>), and will contact you if we discover you are affected. However we may not find everything. </p> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="Update_a_check_for_the_type_of_user" data-mw-thread-id="h-Update_a_check_for_the_type_of_user-Como_atualizar_o_código?"><span data-mw-comment-start="" id="h-Update_a_check_for_the_type_of_user-Como_atualizar_o_código?"></span>Update a check for the type of user<span data-mw-comment-end="h-Update_a_check_for_the_type_of_user-Como_atualizar_o_código?"></span></h3></div> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>In the simplest scenario, you may only need to update a check for the type of user: </p> </div> <table class="wikitable"> <caption><span lang="en" dir="ltr" class="mw-content-ltr">Code changes Before and After</span> </caption> <tbody><tr> <th><span lang="en" dir="ltr" class="mw-content-ltr">Your code was checking...</span> </th> <th><span lang="en" dir="ltr" class="mw-content-ltr">You want...</span> </th> <th><span lang="en" dir="ltr" class="mw-content-ltr">Your code should now...</span> </th></tr> <tr> <td><code>$user->isRegistered()</code> </td> <td><span lang="en" dir="ltr" class="mw-content-ltr">to treat temp users the same as registered users</span> </td> <td><span lang="en" dir="ltr" class="mw-content-ltr">no change needed</span> </td></tr> <tr> <td><code>$user->isRegistered()</code> </td> <td><span lang="en" dir="ltr" class="mw-content-ltr">to treat temp users the same as anon users</span> </td> <td><span lang="en" dir="ltr" class="mw-content-ltr">check <code>$user->isNamed()</code></span> </td></tr> <tr> <td><code>$user->isAnon()</code> </td> <td><span lang="en" dir="ltr" class="mw-content-ltr">to treat temp users the same as registered users</span> </td> <td><span lang="en" dir="ltr" class="mw-content-ltr">no change needed</span> </td></tr> <tr> <td><code>$user->isAnon()</code> </td> <td><span lang="en" dir="ltr" class="mw-content-ltr">to treat temp users the same as anon users</span> </td> <td><span lang="en" dir="ltr" class="mw-content-ltr">check <code>!$user->isNamed()</code></span> </td></tr> <tr> <td><code>$user->isRegistered()</code> or <code>$user->isAnon()</code> </td> <td><span lang="en" dir="ltr" class="mw-content-ltr">to treat temp users differently from registered users or anon users</span> </td> <td><span lang="en" dir="ltr" class="mw-content-ltr">add another check for <code>$user->isTemp()</code></span> </td></tr></tbody></table> <p><span lang="en" dir="ltr" class="mw-content-ltr">The <code>UserIdentityUtils</code> service has the same methods and should be used when a <code>UserIdentityUtils</code> is available, but not a full <code>User</code> (or <code>Authority</code>) object.</span> <span lang="en" dir="ltr" class="mw-content-ltr">The <code>UserNameUtils</code> service also has a method isTemp.</span> </p><p><span lang="en" dir="ltr" class="mw-content-ltr">Similar methods are available in JavaScript via the <code>mediawiki.util</code> and <code>mediawiki.user</code> modules:</span> </p> <ul><li><code>mw.util.isTemporaryUser</code></li> <li><code>mw.user.isTemp</code></li> <li><code>mw.user.isNamed</code></li></ul> <p><span lang="en" dir="ltr" class="mw-content-ltr">However, we have encountered more complex examples where more complicated product and technical solutions are needed.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For example, when an IP address is blocked from editing, there is an option to block anonymous users only.</span> <span lang="en" dir="ltr" class="mw-content-ltr">Should this block temporary users too? Should there be a separate option? Code updates could include changes to core PHP classes, UI forms, site configuration options and the database schema.</span> <span lang="en" dir="ltr" class="mw-content-ltr">Similarly significant updates may be needed to other products.</span> </p> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>It’s important to emphasize checking your products carefully, since they may need to be re-conceived for temporary accounts. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="Anonymous,_Not_logged-in,_Unregistered,_Unnamed?_A_word_on_terminology" data-mw-thread-id="h-Anonymous,_Not_logged-in,_Unregistered,_Unnamed?_A_word_on_terminology-Como_atualizar_o_código?"><span id="Anonymous.2C_Not_logged-in.2C_Unregistered.2C_Unnamed.3F_A_word_on_terminology"></span><span data-mw-comment-start="" id="h-Anonymous,_Not_logged-in,_Unregistered,_Unnamed?_A_word_on_terminology-Como_atualizar_o_código?"></span>Anonymous, Not logged-in, Unregistered, Unnamed? A word on terminology<span data-mw-comment-end="h-Anonymous,_Not_logged-in,_Unregistered,_Unnamed?_A_word_on_terminology-Como_atualizar_o_código?"></span></h3></div> </div> <table class="wikitable"> <caption><span lang="en" dir="ltr" class="mw-content-ltr">Our proposal on how to refer to IP users, temporary users, and permanent users (more at <a href="https://phabricator.wikimedia.org/T337103#9143741" class="extiw" title="phab:T337103">T337103#9143741</a>)</span> </caption> <tbody><tr> <th rowspan="2"><span lang="en" dir="ltr" class="mw-content-ltr">Description</span> </th> <th rowspan="2"><span lang="en" dir="ltr" class="mw-content-ltr">Suggestions</span> </th> <th colspan="2"><span lang="en" dir="ltr" class="mw-content-ltr">Our proposal</span> </th></tr> <tr> <th><span lang="en" dir="ltr" class="mw-content-ltr">Documentation</span> </th> <th><span lang="en" dir="ltr" class="mw-content-ltr">Code</span> </th></tr> <tr> <td><span lang="en" dir="ltr" class="mw-content-ltr">Users who are recognized by their IP address</span></td> <td><span lang="en" dir="ltr" class="mw-content-ltr">IP, Anonymous, Logged-out, Unregistered</span></td> <td><span lang="en" dir="ltr" class="mw-content-ltr">IP users</span></td> <td><span lang="en" dir="ltr" class="mw-content-ltr">Rename <code>User::isAnon</code> to <code>User::isIP</code> or remove it altogether</span> </td></tr> <tr> <td><span lang="en" dir="ltr" class="mw-content-ltr">Users whose accounts were autocreated when performing some action</span></td> <td><span lang="en" dir="ltr" class="mw-content-ltr">Temporary, Unnamed, Limited</span></td> <td><span lang="en" dir="ltr" class="mw-content-ltr">Temporary users</span></td> <td><span lang="en" dir="ltr" class="mw-content-ltr">Keep <code>User::isTemp</code>, or rename to <code>User::hasTempAccount</code></span> </td></tr> <tr> <td><span lang="en" dir="ltr" class="mw-content-ltr">Users who have been through a full registration process</span></td> <td><span lang="en" dir="ltr" class="mw-content-ltr">Registered, Named, Regular</span></td> <td><span lang="en" dir="ltr" class="mw-content-ltr">Permanent users</span></td> <td><span lang="en" dir="ltr" class="mw-content-ltr">Rename <code>User::isNamed</code> to <code>User::isPermanent</code> or <code>User::hasPermanentAccount</code></span> </td></tr> <tr> <td><span lang="en" dir="ltr" class="mw-content-ltr">Users who have a row in the user table</span></td> <td><span lang="en" dir="ltr" class="mw-content-ltr">Registered, Something involving "account"</span></td> <td><span lang="en" dir="ltr" class="mw-content-ltr">Users who have an account</span></td> <td><span lang="en" dir="ltr" class="mw-content-ltr">Rename <code>User::isRegistered</code> to <code>User::hasAccount</code>, or remove it and check <code>User::getID</code> instead</span> </td></tr></tbody></table> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="Creating_a_new_temporary_user" data-mw-thread-id="h-Creating_a_new_temporary_user-Como_atualizar_o_código?"><span data-mw-comment-start="" id="h-Creating_a_new_temporary_user-Como_atualizar_o_código?"></span>Creating a new temporary user<span data-mw-comment-end="h-Creating_a_new_temporary_user-Como_atualizar_o_código?"></span></h3></div> </div> <p><span lang="en" dir="ltr" class="mw-content-ltr">If your feature allows logged-out users to perform an action that creates an actor in the <code>actor</code> table whose name is their IP address, you'll need instead to create a temporary account the first time a logged out user performs the action.</span> <span lang="en" dir="ltr" class="mw-content-ltr">Attempting to create an actor with an IP address as the name now throws an error if temporary accounts are enabled.</span> </p><p><span lang="en" dir="ltr" class="mw-content-ltr">What to do:</span> </p> <ul><li><span lang="en" dir="ltr" class="mw-content-ltr">File a subtask of <a href="https://phabricator.wikimedia.org/T349129" class="extiw" title="phab:T349129">T349129</a> (example subtask: <a href="https://phabricator.wikimedia.org/T349130" class="extiw" title="phab:T349130">T349130</a>)</span></li> <li><span lang="en" dir="ltr" class="mw-content-ltr">You only need to do any of this if the permissions configuration allows anyone (group <code>*</code>) to perform the action.</span> <span lang="en" dir="ltr" class="mw-content-ltr">Keep this configuration.</span> <span lang="en" dir="ltr" class="mw-content-ltr">If a logged-out user can't perform the action, a temporary account cannot be auto-created for it.</span></li> <li><span lang="en" dir="ltr" class="mw-content-ltr">If the action/permission your feature handles isn't <code>edit</code>, add it to the list of actions that create a temporary user, in <code>$wgAutoCreateTempUser['actions']</code>.</span> <span lang="en" dir="ltr" class="mw-content-ltr">(The list contains <code>edit</code> by default.)</span></li> <li><span lang="en" dir="ltr" class="mw-content-ltr">Use the <code>TempUserCreator</code> to create a temporary user.</span> <span lang="en" dir="ltr" class="mw-content-ltr">Per <a href="https://phabricator.wikimedia.org/T359405" class="extiw" title="phab:T359405">T359405</a>, do this a) once it is likely that the action will be successful (e.g. after permissions checks and other checks that might throw an error) but b) before any code that might generate log entries that would reference a failed edit attempt (e.g. AbuseFilter trips).</span> <span lang="en" dir="ltr" class="mw-content-ltr">(Note that after the temporary user is created it will be different from the global context user.)</span></li> <li><span lang="en" dir="ltr" class="mw-content-ltr">To see an example, look at <code>EditPage::createTempUser</code>.</span> <span lang="en" dir="ltr" class="mw-content-ltr">Note that <code>EditPage</code> has the added complexity of needing to show a preview with the temporary user name, before the temporary user is created.</span> <span lang="en" dir="ltr" class="mw-content-ltr">This should be an unusual requirement, but may be re-implemented in your feature, if necessary.</span></li> <li><span lang="en" dir="ltr" class="mw-content-ltr">In an action API handler (anything that extends <code>ApiBase</code>), use the <code>ApiCreateTempUserTrait</code>, which creates a login redirect URL via CentralAuth (or whichever extension handles the <code>onTempUserCreatedRedirect</code> hook), with the correct values for the <code>returnto</code>, <code>returntoquery</code>, and <code>returntoanchor</code> parameters.</span></li> <li><span lang="en" dir="ltr" class="mw-content-ltr">For other (non-action API) contexts, build the redirect URL and then run the <code>onTempUserCreatedRedirect</code> hook, which modifies the URL for central login.</span> <span lang="en" dir="ltr" class="mw-content-ltr">See <code>EditPage::doPostEditRedirect</code> for an example.</span></li> <li><span lang="en" dir="ltr" class="mw-content-ltr">If you want to show a popup explaining what a temporary account is after the action is completed, use the <code>mediawiki.tempUserCreated</code> module.</span></li></ul> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="Testing_the_onTempUserCreatedRedirect_hook" data-mw-thread-id="h-Testing_the_onTempUserCreatedRedirect_hook-Como_atualizar_o_código?"><span data-mw-comment-start="" id="h-Testing_the_onTempUserCreatedRedirect_hook-Como_atualizar_o_código?"></span>Testing the <code>onTempUserCreatedRedirect</code> hook<span data-mw-comment-end="h-Testing_the_onTempUserCreatedRedirect_hook-Como_atualizar_o_código?"></span></h3></div> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>To test that you’re using this hook correctly, without having a full CentralAuth setup locally, you may use this snippet in your <code>LocalSettings.php</code>: </p> </div> <div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$wgHooks</span><span class="p">[</span><span class="s1">'TempUserCreatedRedirect'</span><span class="p">][]</span> <span class="o">=</span> <span class="k">function</span> <span class="p">(</span> <span class="nx">\MediaWiki\Session\Session</span> <span class="nv">$session</span><span class="p">,</span> <span class="nx">\MediaWiki\User\UserIdentity</span> <span class="nv">$user</span><span class="p">,</span> <span class="nx">string</span> <span class="nv">$returnTo</span><span class="p">,</span> <span class="nx">string</span> <span class="nv">$returnToQuery</span><span class="p">,</span> <span class="nx">string</span> <span class="nv">$returnToAnchor</span><span class="p">,</span> <span class="o">&</span><span class="nv">$redirectUrl</span> <span class="p">)</span> <span class="p">{</span> <span class="k">if</span> <span class="p">(</span> <span class="nv">$returnTo</span> <span class="o">===</span> <span class="s1">''</span> <span class="p">)</span> <span class="p">{</span> <span class="nv">$returnTo</span> <span class="o">=</span> <span class="nx">\MediaWiki\Title\Title</span><span class="o">::</span><span class="na">newMainPage</span><span class="p">()</span><span class="o">-></span><span class="na">getFullText</span><span class="p">();</span> <span class="p">}</span> <span class="k">if</span> <span class="p">(</span> <span class="nv">$returnToQuery</span> <span class="o">===</span> <span class="s1">''</span> <span class="p">)</span> <span class="p">{</span> <span class="nv">$returnToQuery</span> <span class="o">=</span> <span class="s1">'redirected-by-hook=yes'</span><span class="p">;</span> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="nv">$returnToQuery</span> <span class="o">=</span> <span class="s2">"redirected-by-hook=yes&</span><span class="si">$returnToQuery</span><span class="s2">"</span><span class="p">;</span> <span class="p">}</span> <span class="nv">$redirectUrl</span> <span class="o">=</span> <span class="nx">\MediaWiki\Title\Title</span><span class="o">::</span><span class="na">newFromTextThrow</span><span class="p">(</span> <span class="nv">$returnTo</span> <span class="p">)</span> <span class="o">-></span><span class="na">getFullURL</span><span class="p">(</span> <span class="nv">$returnToQuery</span> <span class="p">)</span> <span class="o">.</span> <span class="nv">$returnToAnchor</span><span class="p">;</span> <span class="p">};</span> </pre></div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>This sets the redirect URL to the given title, query and anchor (without an intermediate central login), and adds <code>redirected-by-hook=yes</code> to the query so you can tell that the hook was used. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="Updating_AbuseFilter_filters" data-mw-thread-id="h-Updating_AbuseFilter_filters-Como_atualizar_o_código?"><span data-mw-comment-start="" id="h-Updating_AbuseFilter_filters-Como_atualizar_o_código?"></span>Updating AbuseFilter filters<span data-mw-comment-end="h-Updating_AbuseFilter_filters-Como_atualizar_o_código?"></span></h3></div> </div> <p><span lang="en" dir="ltr" class="mw-content-ltr">Filters used by <a href="/wiki/Special:MyLanguage/Extension:AbuseFilter" title="Special:MyLanguage/Extension:AbuseFilter">AbuseFilter</a><span style="display:none"><a href="/wiki/Extension:AbuseFilter" title="Extension:AbuseFilter"> </a></span> that use IPs in their conditions may need to be updated to work with temporary accounts.</span> <span lang="en" dir="ltr" class="mw-content-ltr">Notably, the <code>user_name</code> variable is expected to no longer return an IP, breaking any condition that relies on that access.</span> <span lang="en" dir="ltr" class="mw-content-ltr">The following migration steps are expected but is subject to change:</span> </p> <ul><li><span lang="en" dir="ltr" class="mw-content-ltr">Conditions that use the <code>ip_in_range</code> or <code>ip_in_ranges</code> will no longer work, as the <code>user_name</code> passed through will no longer contain the IP for anonymous users.</span> <span lang="en" dir="ltr" class="mw-content-ltr">Instead, a new proposed variable <code>user_unnamed_ip</code> should be used instead.</span> <span lang="en" dir="ltr" class="mw-content-ltr">Work on this is tracked via <a href="https://phabricator.wikimedia.org/T357772" class="extiw" title="phab:T357772">phab:T357772</a>.</span></li> <li><span lang="en" dir="ltr" class="mw-content-ltr">Conditions that use <code>user_name</code> to access the IP should instead use the proposed <code>user_unnamed_ip</code> variable.</span></li> <li><span lang="en" dir="ltr" class="mw-content-ltr">Conditions that implicitly check for IPs/anonymous users (eg. via <code>user_age</code> or <code>user_groups</code>) may not work. Instead, use the new <code>user_type</code> variable which can return 'named', 'temp', 'ip', 'external', or 'unknown'. Depending on what the filter does, it may need to filter for both 'temp' and 'ip' values.</span></li></ul> <div lang="en" dir="ltr" class="mw-content-ltr"> <p><code>user_unnamed_ip</code> works for anonymous and temporary users, so filters using <code>user_name</code> can be updated to use <code>user_unnamed_ip</code> instead, allowing for an easier migration of filters. This should be done on each wiki before temporary accounts are deployed there. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="Updating_AbuseFilter_permissions" data-mw-thread-id="h-Updating_AbuseFilter_permissions-Como_atualizar_o_código?"><span data-mw-comment-start="" id="h-Updating_AbuseFilter_permissions-Como_atualizar_o_código?"></span>Updating AbuseFilter permissions<span data-mw-comment-end="h-Updating_AbuseFilter_permissions-Como_atualizar_o_código?"></span></h3></div> </div> <p><span lang="en" dir="ltr" class="mw-content-ltr">In order to support IPs as PII, AbuseFilter now has the concept of protected variables, which are variables containing sensitive information and access to which is restricted.</span> <code>user_unnamed_ip</code> is a protected variable. <span lang="en" dir="ltr" class="mw-content-ltr">Filters that use protected variables are themselves considered protected and both edit and view access are similarly restricted.</span> </p><p><span lang="en" dir="ltr" class="mw-content-ltr">The following rights have been added:</span> </p> <table class="wikitable"> <tbody><tr> <th>Right</th> <th>Description </th></tr> <tr> <td><code>abusefilter-access-protected-vars</code></td> <td>Ver e criar filtros que usam variáveis protegidas </td></tr> <tr> <td><code>abusefilter-protected-vars-log </code></td> <td>View logs related to accessing protected variable values </td></tr></tbody></table> <p>Maintainers will require the <code>abusefilter-access-protected-vars</code> in order to create and view filters and logs associated with protected variables. For more details, see <a href="/wiki/Special:MyLanguage/Extension:AbuseFilter/Rules_format#Protected_variables" title="Special:MyLanguage/Extension:AbuseFilter/Rules format">Extension:AbuseFilter/Rules format#Protected variables</a><span style="display:none"><a href="/wiki/Extension:AbuseFilter/Rules_format#Protected_variables" title="Extension:AbuseFilter/Rules format"> </a></span>. </p> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="Update_documentation" data-mw-thread-id="h-Update_documentation-Como_atualizar_o_código?"><span data-mw-comment-start="" id="h-Update_documentation-Como_atualizar_o_código?"></span>Update documentation<span data-mw-comment-end="h-Update_documentation-Como_atualizar_o_código?"></span></h3></div> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>Kindly add your information on the <a href="/wiki/Special:MyLanguage/Trust_and_Safety_Product/Temporary_Accounts/Updates/Related_changes" title="Special:MyLanguage/Trust and Safety Product/Temporary Accounts/Updates/Related changes">updates page</a> as and when you complete any community-facing change relating to this project. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="FAQ_for_developers" data-mw-thread-id="h-FAQ_for_developers"><span data-mw-comment-start="" id="h-FAQ_for_developers"></span>FAQ for developers<span data-mw-comment-end="h-FAQ_for_developers"></span></h2><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-FAQ_for_developers","replies":["h-What's_the_change_from_a_technical_perspective?-FAQ_for_developers","h-How_can_my_code_check_if_temp_accounts_is_enabled?-FAQ_for_developers","h-Should_my_tool_treat_temp_accounts_the_same_as_regular_accounts?-FAQ_for_developers","h-Why_are_temporary_accounts_implemented_so_similarly_to_named_user_accounts,_if_t-FAQ_for_developers","h-Why_does_User::isRegistered_return_true_instead_of_false_for_a_temporary_account-FAQ_for_developers","h-Can_our_database_handle_the_increased_number_of_new_accounts_created?-FAQ_for_developers","h-What_will_be_stored_in_the_database_instead_of_the_IP_address?-FAQ_for_developers","h-Where_in_the_database_will_IP_addresses_be_stored?-FAQ_for_developers","h-Will_old_IP_addresses_be_hidden?_Where_IP_addresses_are_already_stored_in_the_da-FAQ_for_developers","h-Will_this_increase_the_amount_of_traffic_bypassing_the_Varnish_cache?-FAQ_for_developers","h-What_is_mw.config.get('wgUserName')_for_a_temporary_user?-FAQ_for_developers","h-What_is_mw.config.get('wgUserGroups')_for_a_temporary_user?-FAQ_for_developers","h-Can_temporary_users_be_assigned_to_groups,_autopromoted_or_autoconfirmed?-FAQ_for_developers","h-I'm_a_developer_for_a_tool_or_third-party_MediaWiki_extension._How_do_I_let_the-FAQ_for_developers","h-PHPUnit_tests_for_my_extension_break_with_temp_accounts_enabled-FAQ_for_developers","h-I_have_questions_not_answered_on_this_page-FAQ_for_developers"]}}--></div> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="What's_the_change_from_a_technical_perspective?" data-mw-thread-id="h-What's_the_change_from_a_technical_perspective?-FAQ_for_developers"><span id="What.27s_the_change_from_a_technical_perspective.3F"></span><span data-mw-comment-start="" id="h-What's_the_change_from_a_technical_perspective?-FAQ_for_developers"></span>What's the change from a technical perspective?<span data-mw-comment-end="h-What's_the_change_from_a_technical_perspective?-FAQ_for_developers"></span></h3></div> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>A temporary account is in the <code>user</code> table, and is for all intents and purposes a regular account, but with a few differences: </p> </div> <ol><li><span lang="en" dir="ltr" class="mw-content-ltr">A cookie will be set on the user’s browser when the account is created. This cookie will be used to attribute all subsequent edits performed by this user even if the user’s IP address changes. Essentially, there are no more edits that are attributed directly to IPs. The temporary account exists for as long as the cookie exists. The cookie is set to expire after one year from the first edit.</span></li> <li><span lang="en" dir="ltr" class="mw-content-ltr">There is an automatically generated username assigned to this user, and no password. As such, it is impossible to log in to this user account. The only way to be logged in as this user is to simply have an unexpired cookie that was set when the account was created.</span></li> <li><span lang="en" dir="ltr" class="mw-content-ltr">As for the code:</span> <ol><li><span lang="en" dir="ltr" class="mw-content-ltr"><code>User::isRegistered()</code> will return true for all registered accounts, including temporary accounts.</span></li> <li><span lang="en" dir="ltr" class="mw-content-ltr"><code>User::isAnon()</code> will return false for such temporary accounts.</span></li> <li><span lang="en" dir="ltr" class="mw-content-ltr"><code>User::isTemp()</code> will return true exclusively for temporary accounts.</span></li> <li><span lang="en" dir="ltr" class="mw-content-ltr"><code>User::isNamed()</code> will return true exclusively for registered accounts that are not temporary accounts.</span></li></ol></li> <li><span lang="en" dir="ltr" class="mw-content-ltr">Temporary usernames will begin with an asterisk and take the general form of : <b>~12345</b> (the format is defined by the config <code>$wgAutoCreateTempUser['genPattern']</code>).</span></li> <li><span lang="en" dir="ltr" class="mw-content-ltr">A temporary user will be represented by a row in the <code>user</code> table. A row can only be determined as representing a temporary (as opposed to registered) user via the name stored in user.user_name. A temporary user name will match the config <code>$wgAutoCreateTempUser['matchPattern']</code>.</span></li></ol> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="How_can_my_code_check_if_temp_accounts_is_enabled?" data-mw-thread-id="h-How_can_my_code_check_if_temp_accounts_is_enabled?-FAQ_for_developers"><span id="How_can_my_code_check_if_temp_accounts_is_enabled.3F"></span><span data-mw-comment-start="" id="h-How_can_my_code_check_if_temp_accounts_is_enabled?-FAQ_for_developers"></span>How can my code check if temp accounts is enabled?<span data-mw-comment-end="h-How_can_my_code_check_if_temp_accounts_is_enabled?-FAQ_for_developers"></span></h3></div> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>There are two relevant methods in the <code>TempUserConfig</code> interface. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <ul><li><code>isEnabled()</code> indicates the auto creation of temporary accounts is currently active</li> <li><code>isKnown()</code> indicates that temporary accounts are a known concept on the wiki. It does not mean that auto creation of temporary accounts is currently active. It does mean that temporary accounts may exist on the wiki.</li></ul> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="Should_my_tool_treat_temp_accounts_the_same_as_regular_accounts?" data-mw-thread-id="h-Should_my_tool_treat_temp_accounts_the_same_as_regular_accounts?-FAQ_for_developers"><span id="Should_my_tool_treat_temp_accounts_the_same_as_regular_accounts.3F"></span><span data-mw-comment-start="" id="h-Should_my_tool_treat_temp_accounts_the_same_as_regular_accounts?-FAQ_for_developers"></span>Should my tool treat temp accounts the same as regular accounts?<span data-mw-comment-end="h-Should_my_tool_treat_temp_accounts_the_same_as_regular_accounts?-FAQ_for_developers"></span></h3></div> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>Depends on your feature. However, if you allow users to accrue anything on a temporary account, such as points, history or preferences, please note that the users will lose everything when the account expires. This may not be a happy outcome for those users. For everything else, treating them as regular accounts may be a safe bet, but you know your product best. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>In the event that you decide to provide extra features for temporary accounts that did not exist for IP editors, please tell us, as we're tracking what extra functionality will be made available for temporary accounts compared to unregistered editors previously. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="Why_are_temporary_accounts_implemented_so_similarly_to_named_user_accounts,_if_the_users_themselves_are_more_similar_to_anonymous_users?" data-mw-thread-id="h-Why_are_temporary_accounts_implemented_so_similarly_to_named_user_accounts,_if_t-FAQ_for_developers"><span id="Why_are_temporary_accounts_implemented_so_similarly_to_named_user_accounts.2C_if_the_users_themselves_are_more_similar_to_anonymous_users.3F"></span><span data-mw-comment-start="" id="h-Why_are_temporary_accounts_implemented_so_similarly_to_named_user_accounts,_if_t-FAQ_for_developers"></span>Why are temporary accounts implemented so similarly to named user accounts, if the users themselves are more similar to anonymous users?<span data-mw-comment-end="h-Why_are_temporary_accounts_implemented_so_similarly_to_named_user_accounts,_if_t-FAQ_for_developers"></span></h3></div> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <ul><li>CentralAuth integration was a product requirement. After saving a revision, the user is logged in on all wikis. Implementing this without creating a user row would have been very challenging.</li> <li>Creating a user row allows us to share session management infrastructure with logged-in users. The long-lived cookie which keeps the temporary user logged in is identical to the “remember me” feature for regular user accounts.</li> <li>Temporary accounts are meant to represent the actions of a particular person, much like a named account. On the other hand, anonymous (IP address) actors can represent many different people, and it is expected that one person may act via several IP address actors at once.</li></ul> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="Why_does_User::isRegistered_return_true_instead_of_false_for_a_temporary_account?_Shouldn’t_temporary_users_mostly_be_treated_like_anonymous_users?" data-mw-thread-id="h-Why_does_User::isRegistered_return_true_instead_of_false_for_a_temporary_account-FAQ_for_developers"><span id="Why_does_User::isRegistered_return_true_instead_of_false_for_a_temporary_account.3F_Shouldn.E2.80.99t_temporary_users_mostly_be_treated_like_anonymous_users.3F"></span><span data-mw-comment-start="" id="h-Why_does_User::isRegistered_return_true_instead_of_false_for_a_temporary_account-FAQ_for_developers"></span>Why does <code>User::isRegistered</code> return true instead of false for a temporary account? Shouldn’t temporary users mostly be treated like anonymous users?<span data-mw-comment-end="h-Why_does_User::isRegistered_return_true_instead_of_false_for_a_temporary_account-FAQ_for_developers"></span></h3></div> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>A temporary account behaves like a named account internally and represents a similar real-world entity (i.e. a person). This concept - and the software - would become muddled if <code>User::isRegistered</code> returned false. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>Many features need to treat temporary accounts the same as named users: for example, temporary users can request tokens and use these as identifiers when editing via the API, e.g. in order to build an edit history via mobile apps. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>Features can be updated on a case-by-case basis to treat temporary users like anonymous users or named users (or in a different way to either). </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="Can_our_database_handle_the_increased_number_of_new_accounts_created?" data-mw-thread-id="h-Can_our_database_handle_the_increased_number_of_new_accounts_created?-FAQ_for_developers"><span id="Can_our_database_handle_the_increased_number_of_new_accounts_created.3F"></span><span data-mw-comment-start="" id="h-Can_our_database_handle_the_increased_number_of_new_accounts_created?-FAQ_for_developers"></span>Can our database handle the increased number of new accounts created?<span data-mw-comment-end="h-Can_our_database_handle_the_increased_number_of_new_accounts_created?-FAQ_for_developers"></span></h3></div> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>We can't be sure exactly how many extra new accounts will be made, but if it's in the order of the low double-digit millions per year (as suggested by <a href="https://phabricator.wikimedia.org/T327365#8558972" class="extiw" title="phab:T327365">phab:T327365#8558972</a>), then the corresponding growth of the <code>user</code> and <code>actor</code> tables is acceptable. The size increase of the <code>user_properties</code> table would have been a concern, but temporary accounts can't save preferences, so won't add rows to this table. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="What_will_be_stored_in_the_database_instead_of_the_IP_address?" data-mw-thread-id="h-What_will_be_stored_in_the_database_instead_of_the_IP_address?-FAQ_for_developers"><span id="What_will_be_stored_in_the_database_instead_of_the_IP_address.3F"></span><span data-mw-comment-start="" id="h-What_will_be_stored_in_the_database_instead_of_the_IP_address?-FAQ_for_developers"></span>What will be stored in the database instead of the IP address?<span data-mw-comment-end="h-What_will_be_stored_in_the_database_instead_of_the_IP_address?-FAQ_for_developers"></span></h3></div> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>The `actor` table stores IP addresses as an actor's name in the `actor_name` column. With temporary accounts enabled, no new users will have their IP address as their name, so their temporary user name will be stored in the `actor_name` column instead. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>The `ip_changes` table also stores IP addresses, but a row will not be made in `ip_changes` for an edit made by a temporary account. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="Where_in_the_database_will_IP_addresses_be_stored?" data-mw-thread-id="h-Where_in_the_database_will_IP_addresses_be_stored?-FAQ_for_developers"><span id="Where_in_the_database_will_IP_addresses_be_stored.3F"></span><span data-mw-comment-start="" id="h-Where_in_the_database_will_IP_addresses_be_stored?-FAQ_for_developers"></span>Where in the database will IP addresses be stored?<span data-mw-comment-end="h-Where_in_the_database_will_IP_addresses_be_stored?-FAQ_for_developers"></span></h3></div> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>IP addresses for temporary users will be stored the same way for temporary users and users with a full account. They will be stored in the CheckUser tables for a limited time, then they will be purged from the table. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="Will_old_IP_addresses_be_hidden?_Where_IP_addresses_are_already_stored_in_the_database,_will_they_be_removed?_Will_it_be_possible_to_instantiate_a_`User`_object_with_an_IP_address_as_its_name?" data-mw-thread-id="h-Will_old_IP_addresses_be_hidden?_Where_IP_addresses_are_already_stored_in_the_da-FAQ_for_developers"><span id="Will_old_IP_addresses_be_hidden.3F_Where_IP_addresses_are_already_stored_in_the_database.2C_will_they_be_removed.3F_Will_it_be_possible_to_instantiate_a_.60User.60_object_with_an_IP_address_as_its_name.3F"></span><span data-mw-comment-start="" id="h-Will_old_IP_addresses_be_hidden?_Where_IP_addresses_are_already_stored_in_the_da-FAQ_for_developers"></span>Will old IP addresses be hidden? Where IP addresses are already stored in the database, will they be removed? Will it be possible to instantiate a `User` object with an IP address as its name?<span data-mw-comment-end="h-Will_old_IP_addresses_be_hidden?_Where_IP_addresses_are_already_stored_in_the_da-FAQ_for_developers"></span></h3></div> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>After temporary accounts are enabled, any IP addresses that were visible before enabling temporary accounts will still be visible. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>Those IP addresses will still exist in database tables. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>It will still be possible to instantiate a `User` object with an IP address as its name. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="Will_this_increase_the_amount_of_traffic_bypassing_the_Varnish_cache?" data-mw-thread-id="h-Will_this_increase_the_amount_of_traffic_bypassing_the_Varnish_cache?-FAQ_for_developers"><span id="Will_this_increase_the_amount_of_traffic_bypassing_the_Varnish_cache.3F"></span><span data-mw-comment-start="" id="h-Will_this_increase_the_amount_of_traffic_bypassing_the_Varnish_cache?-FAQ_for_developers"></span>Will this increase the amount of traffic bypassing the Varnish cache?<span data-mw-comment-end="h-Will_this_increase_the_amount_of_traffic_bypassing_the_Varnish_cache?-FAQ_for_developers"></span></h3></div> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>There should be no effect here, since recent IP editors already bypass the <a href="/wiki/Special:MyLanguage/Manual:Varnish_caching" title="Special:MyLanguage/Manual:Varnish caching">Varnish cache</a><span style="display:none"><a href="/wiki/Manual:Varnish_caching" title="Manual:Varnish caching"> </a></span>. Logged out readers will still hit it. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="What_is_mw.config.get('wgUserName')_for_a_temporary_user?" data-mw-thread-id="h-What_is_mw.config.get('wgUserName')_for_a_temporary_user?-FAQ_for_developers"><span id="What_is_mw.config.get.28.27wgUserName.27.29_for_a_temporary_user.3F"></span><span data-mw-comment-start="" id="h-What_is_mw.config.get('wgUserName')_for_a_temporary_user?-FAQ_for_developers"></span>What is <code>mw.config.get('wgUserName')</code> for a temporary user?<span data-mw-comment-end="h-What_is_mw.config.get('wgUserName')_for_a_temporary_user?-FAQ_for_developers"></span></h3></div> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>This will return the temporary user's name (whereas for an IP user it returns <code>null</code>). This is because temporary users are implemented the same as registered users, and it may be necessary to access their name. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>You can check if a user is temporary in JavaScript via the <code>mediawiki.util</code> and <code>mediawiki.user</code> modules: </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <ul><li><code>mw.util.isTemporaryUser</code></li> <li><code>mw.user.isTemp</code></li> <li><code>mw.user.isNamed</code></li></ul> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="What_is_mw.config.get('wgUserGroups')_for_a_temporary_user?" data-mw-thread-id="h-What_is_mw.config.get('wgUserGroups')_for_a_temporary_user?-FAQ_for_developers"><span id="What_is_mw.config.get.28.27wgUserGroups.27.29_for_a_temporary_user.3F"></span><span data-mw-comment-start="" id="h-What_is_mw.config.get('wgUserGroups')_for_a_temporary_user?-FAQ_for_developers"></span>What is <code>mw.config.get('wgUserGroups')</code> for a temporary user?<span data-mw-comment-end="h-What_is_mw.config.get('wgUserGroups')_for_a_temporary_user?-FAQ_for_developers"></span></h3></div> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>This will return <code>[ "*", "temp" ]</code>. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="Can_temporary_users_be_assigned_to_groups,_autopromoted_or_autoconfirmed?" data-mw-thread-id="h-Can_temporary_users_be_assigned_to_groups,_autopromoted_or_autoconfirmed?-FAQ_for_developers"><span id="Can_temporary_users_be_assigned_to_groups.2C_autopromoted_or_autoconfirmed.3F"></span><span data-mw-comment-start="" id="h-Can_temporary_users_be_assigned_to_groups,_autopromoted_or_autoconfirmed?-FAQ_for_developers"></span>Can temporary users be assigned to groups, autopromoted or autoconfirmed?<span data-mw-comment-end="h-Can_temporary_users_be_assigned_to_groups,_autopromoted_or_autoconfirmed?-FAQ_for_developers"></span></h3></div> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>No. None of these are possible for temporary users. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="I'm_a_developer_for_a_tool_or_third-party_MediaWiki_extension._How_do_I_let_the_WMF_know_about_my_needs?" data-mw-thread-id="h-I'm_a_developer_for_a_tool_or_third-party_MediaWiki_extension._How_do_I_let_the-FAQ_for_developers"><span id="I.27m_a_developer_for_a_tool_or_third-party_MediaWiki_extension._How_do_I_let_the_WMF_know_about_my_needs.3F"></span><span data-mw-comment-start="" id="h-I'm_a_developer_for_a_tool_or_third-party_MediaWiki_extension._How_do_I_let_the-FAQ_for_developers"></span>I'm a developer for a tool or third-party MediaWiki extension. How do I let the WMF know about my needs?<span data-mw-comment-end="h-I'm_a_developer_for_a_tool_or_third-party_MediaWiki_extension._How_do_I_let_the-FAQ_for_developers"></span></h3></div> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>Please add tasks about your work as subtasks of <a href="https://phabricator.wikimedia.org/T326816" class="extiw" title="phab:T326816">phab:T326816</a>. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="PHPUnit_tests_for_my_extension_break_with_temp_accounts_enabled" data-mw-thread-id="h-PHPUnit_tests_for_my_extension_break_with_temp_accounts_enabled-FAQ_for_developers"><span data-mw-comment-start="" id="h-PHPUnit_tests_for_my_extension_break_with_temp_accounts_enabled-FAQ_for_developers"></span>PHPUnit tests for my extension break with temp accounts enabled<span data-mw-comment-end="h-PHPUnit_tests_for_my_extension_break_with_temp_accounts_enabled-FAQ_for_developers"></span></h3></div> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>See <a href="https://phabricator.wikimedia.org/T365645" class="extiw" title="phab:T365645">phab:T365645</a> and <a href="https://phabricator.wikimedia.org/T365669" class="extiw" title="phab:T365669">phab:T365669</a> for example patches on how to update your tests. </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <div class="mw-heading mw-heading3"><h3 id="I_have_questions_not_answered_on_this_page" data-mw-thread-id="h-I_have_questions_not_answered_on_this_page-FAQ_for_developers"><span data-mw-comment-start="" id="h-I_have_questions_not_answered_on_this_page-FAQ_for_developers"></span>I have questions not answered on this page<span data-mw-comment-end="h-I_have_questions_not_answered_on_this_page-FAQ_for_developers"></span></h3></div> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>See: </p> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <ul><li><a href="/wiki/Trust_and_Safety_Product/Temporary_Accounts/FAQ" title="Trust and Safety Product/Temporary Accounts/FAQ">The general FAQ</a> for basic information about the project, legal information, answers to functionaries' questions, etc.</li> <li><a href="https://phabricator.wikimedia.org/T326816" class="extiw" title="phab:T326816">T326816</a> and <a href="https://phabricator.wikimedia.org/T300263" class="extiw" title="phab:T300263">T300263</a> for more technical details.</li></ul> </div> <div lang="en" dir="ltr" class="mw-content-ltr"> <p>You may also reach out to us <a href="/wiki/Talk:Trust_and_Safety_Product/Temporary_Accounts" title="Talk:Trust and Safety Product/Temporary Accounts">on the talk page</a>. </p> </div> <!-- NewPP limit report Parsed by mw‐jobrunner.codfw.main‐679d95f4d4‐rv2fd Cached time: 20241122130026 Cache expiry: 2592000 Reduced expiry: false Complications: [show‐toc] DiscussionTools time usage: 0.042 seconds CPU time usage: 0.245 seconds Real time usage: 0.312 seconds Preprocessor visited node count: 972/1000000 Post‐expand include size: 9430/2097152 bytes Template argument size: 3909/2097152 bytes Highest expansion depth: 15/100 Expensive parser function count: 2/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 5889/5000000 bytes Lua time usage: 0.052/10.000 seconds Lua memory usage: 1304915/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 141.583 1 -total 74.92% 106.078 8 Template:Ll 65.80% 93.163 16 Template:Translatable 58.90% 83.390 1 Template:Temporary_Accounts/Header 39.91% 56.499 16 Template:Pagelang 6.12% 8.661 2 Template:Int --> <!-- Saved in parser cache with key mediawikiwiki:pcache:idhash:2039904-0!canonical and timestamp 20241122130026 and revision id 6864193. Rendering was triggered because: edit-page --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://www.mediawiki.org/w/index.php?title=Trust_and_Safety_Product/Temporary_Accounts/For_developers/pt-br&oldid=6864193">https://www.mediawiki.org/w/index.php?title=Trust_and_Safety_Product/Temporary_Accounts/For_developers/pt-br&oldid=6864193</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Special:Categories" title="Special:Categories">Category</a>: <ul><li><a href="/wiki/Category:Temporary_Accounts/pt-br" title="Category:Temporary Accounts/pt-br">Temporary Accounts/pt-br</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 22 November 2024, at 13:00.</li> <li id="footer-info-copyright">Text is available under the <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-ShareAlike License</a>; additional terms may apply. Text in <a class="external text" href="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents">the Help: namespace</a> is available under the <a rel="nofollow" class="external text" href="https://creativecommons.org/publicdomain/zero/1.0/">Creative Commons CC0 License</a>. By using this site, you agree to the <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Terms of Use</a> and <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy Policy</a>.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Project:About">About mediawiki.org</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Project:General_disclaimer">Disclaimers</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/www.mediawiki.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//m.mediawiki.org/w/index.php?title=Trust_and_Safety_Product/Temporary_Accounts/For_developers/pt-br&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-f69cdc8f6-mlxnj","wgBackendResponseTime":268,"wgDiscussionToolsPageThreads":[{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Crie_contas_temporários_para_seus_recursos","replies":[]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Diretrizes_de_design_desta_mudança","replies":[]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Como_atualizar_o_código?","replies":[{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Perguntas_frequentes-Como_atualizar_o_código?","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Update_a_check_for_the_type_of_user-Como_atualizar_o_código?","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Anonymous,_Not_logged-in,_Unregistered,_Unnamed?_A_word_on_terminology-Como_atualizar_o_código?","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Creating_a_new_temporary_user-Como_atualizar_o_código?","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Testing_the_onTempUserCreatedRedirect_hook-Como_atualizar_o_código?","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Updating_AbuseFilter_filters-Como_atualizar_o_código?","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Updating_AbuseFilter_permissions-Como_atualizar_o_código?","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Update_documentation-Como_atualizar_o_código?","replies":[]}]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-FAQ_for_developers","replies":[{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-What's_the_change_from_a_technical_perspective?-FAQ_for_developers","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-How_can_my_code_check_if_temp_accounts_is_enabled?-FAQ_for_developers","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Should_my_tool_treat_temp_accounts_the_same_as_regular_accounts?-FAQ_for_developers","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Why_are_temporary_accounts_implemented_so_similarly_to_named_user_accounts,_if_t-FAQ_for_developers","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Why_does_User::isRegistered_return_true_instead_of_false_for_a_temporary_account-FAQ_for_developers","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Can_our_database_handle_the_increased_number_of_new_accounts_created?-FAQ_for_developers","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-What_will_be_stored_in_the_database_instead_of_the_IP_address?-FAQ_for_developers","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Where_in_the_database_will_IP_addresses_be_stored?-FAQ_for_developers","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Will_old_IP_addresses_be_hidden?_Where_IP_addresses_are_already_stored_in_the_da-FAQ_for_developers","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Will_this_increase_the_amount_of_traffic_bypassing_the_Varnish_cache?-FAQ_for_developers","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-What_is_mw.config.get('wgUserName')_for_a_temporary_user?-FAQ_for_developers","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-What_is_mw.config.get('wgUserGroups')_for_a_temporary_user?-FAQ_for_developers","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Can_temporary_users_be_assigned_to_groups,_autopromoted_or_autoconfirmed?-FAQ_for_developers","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-I'm_a_developer_for_a_tool_or_third-party_MediaWiki_extension._How_do_I_let_the-FAQ_for_developers","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-PHPUnit_tests_for_my_extension_break_with_temp_accounts_enabled-FAQ_for_developers","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-I_have_questions_not_answered_on_this_page-FAQ_for_developers","replies":[]}]}],"wgPageParseReport":{"discussiontools":{"limitreport-timeusage":"0.042"},"limitreport":{"cputime":"0.245","walltime":"0.312","ppvisitednodes":{"value":972,"limit":1000000},"postexpandincludesize":{"value":9430,"limit":2097152},"templateargumentsize":{"value":3909,"limit":2097152},"expansiondepth":{"value":15,"limit":100},"expensivefunctioncount":{"value":2,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":5889,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 141.583 1 -total"," 74.92% 106.078 8 Template:Ll"," 65.80% 93.163 16 Template:Translatable"," 58.90% 83.390 1 Template:Temporary_Accounts/Header"," 39.91% 56.499 16 Template:Pagelang"," 6.12% 8.661 2 Template:Int"]},"scribunto":{"limitreport-timeusage":{"value":"0.052","limit":"10.000"},"limitreport-memusage":{"value":1304915,"limit":52428800}},"cachereport":{"origin":"mw-jobrunner.codfw.main-679d95f4d4-rv2fd","timestamp":"20241122130026","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>